Агуулгын хүснэгт:

Бөөрөлзгөнө Pi ба OpenCV ашиглан бодит цагийн Рубик шоо нүдийг нь тагласан уусгагч: 4 алхам
Бөөрөлзгөнө Pi ба OpenCV ашиглан бодит цагийн Рубик шоо нүдийг нь тагласан уусгагч: 4 алхам

Видео: Бөөрөлзгөнө Pi ба OpenCV ашиглан бодит цагийн Рубик шоо нүдийг нь тагласан уусгагч: 4 алхам

Видео: Бөөрөлзгөнө Pi ба OpenCV ашиглан бодит цагийн Рубик шоо нүдийг нь тагласан уусгагч: 4 алхам
Видео: Mathematics with Python! Evaluating Polynomials 2024, Долдугаар сарын
Anonim

Энэ бол нүдээ аниад шийдэхэд зориулагдсан Рубикийн шоо хэрэгслийн 2 дахь хувилбар юм. Эхний хувилбарыг javascript боловсруулсан бөгөөд та RubiksCubeBlindfolded1 төслийг харж болно

Өмнөх хувилбараас ялгаатай нь энэ хувилбар нь өнгийг илрүүлэх, оролтыг оруулахын тулд OpenCV номын санг ашигладаг бөгөөд илүү сайн дүрслэх техникийг өгдөг.

Энэхүү хамгийн сүүлийн хувилбарын хамгийн том асуудал бол гаралтын дүрслэл бөгөөд дараалсан зүйлүүдийг 1 -р зурсан куб дээр нэг дор харуулна. Шоо нь 3D хэлбэртэй тул бүх талыг зэрэг харуулахад хэцүү байдаг. Үр дүнг миний YouTube сувгийн YouTube видеоноос үзээрэй

Би наалтгүй шоо ашиглаж байгаа тул үүнийг таних шаардлагатай бөгөөд ихэнх нээлттэй эх кодыг дэмждэггүй. Би Kim Koomen -ийн боловсруулсан нээлттэй эх сурвалжийг ашигласан бөгөөд энэ нь qbr төслийн нүүрний кубын өнгийг зөв тодорхойлохын тулд камерын хүрээ дээр тогтсон хэсгийг зааж өгсөн болно.

Алхам 1: Шаардлагатай бүрэлдэхүүн хэсгүүд

  • Raspberry Pi
  • вэб камер

эсвэл та зөөврийн компьютерээ ашиглаж болно

Алхам 2: Хараат байдал

  • Python 3
  • numpy номын сан
  • OpenCV номын сан

$ sudo apt-get install python3-opencv

RubiksBlindfolded багц

$ pip3 RubiksBlindfolded суулгах

Алхам 3: Бэлтгэл ажил

Өнгөний илрүүлэлтийг урьдчилсан алхам болгон тохируулах шаардлагатай. HSV өнгөний код нь гэрэлтүүлэг, камерын чанар, нарийвчлал, шоо өнгөнөөс шалтгаалан өөр өөр байдаг. Миний хувьд цагаан, шар өнгийн гэрлийг хослуулан зөв үр дүнд хүрдэг.

Colordetection.py дээрх get_color_name (hsv) функцийг шинэчлэх

Анхны эх код нь кубыг шийдвэрлэхийн тулд kociemba багцыг ашигладаг бөгөөд энэ нь аливаа хуйвалдааны урвуу алхамыг олох замаар шийддэг. Энэ хувилбарт би PyPI дээр хэвлэгдсэн RubiksBlindfolded нэртэй өөрийн шийдлийн багцыг ашигласан. Үүнийг хэрхэн ашиглах талаар тайлбарыг үзнэ үү RubiksBlindfolded

Алхам 4: Хэрэглээ

Хэрэглээ
Хэрэглээ
Хэрэглээ
Хэрэглээ

Бүх хамаарлыг суулгаж, камераа тохируулсны дараа энэ нь сохор.py скриптийг ажиллуулах цаг болжээ

Нэгдүгээрт, та кубаа зөв чиглэлд сканнердах хэрэгтэй. Энэ бол кубын бүтэц бөгөөд нүүрийг скан хийх дараалал нь чухал биш юм. Эдгээр нь куб нүүрний анхдагч өнгө гэдгийг анзаараарай, та тэдгээрийг сохор.py скрипт дээрх тэмдэглэгээний толь бичгийг шинэчлэх замаар өөрчилж болно.

Скан хийхийн тулд зайны товчлуурыг дарж, дүрсийг хадгалж дууссаны дараа ESC товчлуурыг дарна уу

Хоёрдугаарт, та консол дээрх шийдлийн дарааллыг харж, паритетын алгоритмыг ашиглах шаардлагатай эсэхийг шалгах боломжтой болно.

Гуравдугаарт, ирмэгийн дараалал болон булангийн дарааллыг харуулсан 2 зурсан кубыг харуулсан шинэ хүрээ үүснэ. Та дарааллын зүйлүүдийн хооронд шилжихийн тулд зүүн ба баруун сум, ирмэг ба булангийн хооронд шилжихийн тулд дээш, доош сумтай товчлууруудыг ашиглаж болно. цайвар саарал өнгө нь одоогийн дарааллыг илэрхийлнэ.

Та сумны товчлуураар динамикаар өөрчлөгдөж буй өнөөгийн буферын өнгийг харж болно. Саарал өнгө нь зорилтот бамбарууш, ягаан өнгө нь сольж буй нүүрийг илэрхийлдэг

Эх код

github.com/mn-banjar/blindfolded2

Зөвлөмж болгож буй: