สารบัญ:
2025 ผู้เขียน: John Day | [email protected]. แก้ไขล่าสุด: 2025-01-13 06:58
นี่เป็นเครื่องมือคิวบ์ของ Rubik รุ่นที่ 2 ที่สร้างขึ้นสำหรับการแก้ปริศนาโดยปิดตา รุ่นที่ 1 ถูกพัฒนาโดย javascript คุณสามารถเห็นโครงการ RubiksCubeBlindfolded1
เวอร์ชันนี้ใช้ไลบรารี OpenCV ต่างจากรุ่นก่อนเพื่อตรวจจับสีและป้อนอินพุต และให้เทคนิคการแสดงภาพที่ดีขึ้น
ปัญหาที่ใหญ่ที่สุดในเวอร์ชันใหม่ล่าสุดนี้คือการแสดงภาพเอาต์พุต รายการลำดับจะแสดงบนคิวบ์ที่ดึงออกมาทีละ 1 รายการ เนื่องจากลูกบาศก์เป็นรูปทรง 3 มิติ จึงยากที่จะแสดงทุกด้านพร้อมกัน ดูผลลัพธ์ในช่อง YouTube วิดีโอ YouTube ของฉัน
ฉันใช้คิวบ์แบบไม่มีสติกเกอร์ สิ่งนี้ต้องการการจดจำแบบกำหนดเองและไม่รองรับโอเพนซอร์สโค้ดส่วนใหญ่ ฉันใช้โอเพ่นซอร์สนี้ที่พัฒนาโดย Kim Koomen ซึ่งระบุพื้นที่คงที่บนเฟรมกล้องเพื่อตรวจจับสีที่ถูกต้องของคิวบ์ใบหน้าโปรเจ็กต์
ขั้นตอนที่ 1: ส่วนประกอบที่จำเป็น
- ราสเบอร์รี่ปี่
- เว็บแคม
หรือจะใช้โน้ตบุ๊กก็ได้
ขั้นตอนที่ 2: การพึ่งพา
- Python3
- ห้องสมุด numpy
- ห้องสมุด OpenCV
$ sudo apt-get ติดตั้ง python3-opencv
แพ็คเกจรูบิกปิดตา
$ pip3 ติดตั้ง RubiksBlindfolded
ขั้นตอนที่ 3: การเตรียมการ
คุณต้องปรับเทียบการตรวจจับสีเป็นขั้นตอนเบื้องต้น รหัสสี HSV นั้นแตกต่างกันไปตามแสง คุณภาพและความละเอียดของกล้อง และสีของลูกบาศก์เอง ในกรณีของฉัน ฉันรวมแสงสีขาวและสีเหลืองเข้าด้วยกันเพื่อให้ได้ผลลัพธ์ที่ถูกต้อง
อัปเดตฟังก์ชัน get_color_name(hsv) บน colordetection.py
ซอร์สโค้ดดั้งเดิมใช้แพ็คเกจ kociemba เพื่อแก้ปัญหาคิวบ์ โดยจะแก้ไขโดยค้นหาขั้นตอนย้อนกลับของการแย่งชิงใดๆ ในเวอร์ชันนี้ ฉันใช้แพ็คเกจการแก้ปัญหาของตัวเองที่ชื่อ RubiksBlindfolded ซึ่งเผยแพร่บน PyPI ดูคำอธิบายเพื่อทราบวิธีใช้งาน RubiksBlindfolded
ขั้นตอนที่ 4: การใช้งาน
หลังจากติดตั้งการพึ่งพาทั้งหมดและตั้งค่ากล้องของคุณแล้ว ถึงเวลาเรียกใช้สคริปต์ blindfolded.py
ขั้นแรก คุณต้องสแกนลูกบาศก์ของคุณในทิศทางที่ถูกต้อง นี่คือโครงสร้างลูกบาศก์ ลำดับการสแกนใบหน้าไม่สำคัญ โปรดสังเกตว่าสีเหล่านี้เป็นสีเริ่มต้นของใบหน้าลูกบาศก์ คุณสามารถเปลี่ยนได้โดยอัปเดตพจนานุกรมสัญลักษณ์บนสคริปต์ blindfolded.py
หากต้องการทำการสแกนให้กดแป้นเว้นวรรคเพื่อบันทึกมุมมองและแป้น ESC หลังจากเสร็จสิ้น
ประการที่สอง คุณสามารถดูลำดับของโซลูชันบนคอนโซล และการตรวจสอบพาริตีเพื่อบอกคุณว่าคุณต้องการใช้อัลกอริธึมพาริตีหรือไม่
ประการที่สาม เฟรมใหม่จะถูกสร้างขึ้นซึ่งแสดงลูกบาศก์ที่วาดออกมา 2 ลูกบาศก์สำหรับลำดับขอบและลำดับมุม คุณสามารถใช้ปุ่มลูกศรซ้ายและขวาเพื่อสลับระหว่างรายการลำดับ และปุ่มลูกศรขึ้นและลงเพื่อสลับระหว่างขอบและมุม สีเทาอ่อนแสดงถึงลำดับปัจจุบัน
คุณสามารถดูสีของบัฟเฟอร์ปัจจุบันที่มีการเปลี่ยนแปลงแบบไดนามิกด้วยปุ่มลูกศร สีเทาเป็นตัวแทนของคิวบีเป้าหมาย และสีชมพูแสดงถึงใบหน้าที่สลับกัน
รหัสแหล่งที่มา
github.com/mn-banjar/blindfolded2