Isi kandungan:
- Langkah 1: PERKARA YANG DIPERLUKAN:
- Langkah 2: PRINSIP KERJA:
- Langkah 3: MASUKKAN DAN PEMPROSESAN:
- Langkah 4:
- Langkah 5:
- Langkah 6: BAHAGIAN PEMPROSESAN:
- Langkah 7:
- Langkah 8:
- Langkah 9:
- Langkah 10:
- Langkah 11:
- Langkah 12: KAWALAN GERAKAN:
- Langkah 13:
Video: Hawk Gesture: Robot Dikendalikan Gerak Tangan menggunakan Antaramuka Berdasarkan Pemprosesan Imej: 13 Langkah (dengan Gambar)
2024 Pengarang: John Day | [email protected]. Diubah suai terakhir: 2024-01-30 11:09
Gesture Hawk dipamerkan di TechEvince 4.0 sebagai antara muka manusia-mesin berasaskan pemprosesan gambar sederhana. Kegunaannya terletak pada kenyataan bahawa tidak diperlukan sensor tambahan atau yang boleh dipakai kecuali sarung tangan untuk mengawal kereta robot yang menggunakan prinsip pemacu pembezaan. Dalam instruksional ini, kami akan memandu anda melalui prinsip kerja di sebalik penjejakan objek dan pengesanan isyarat yang digunakan dalam sistem. Kod sumber projek ini boleh dimuat turun dari Github melalui pautan:
Langkah 1: PERKARA YANG DIPERLUKAN:
- Pemandu Motor L298N
- Motor DC
- Casis kereta robot
- Arduino Uno
- Bateri LiPo
- Kabel USB Arduino (panjang)
- Perpustakaan OpenCV dengan Python
Langkah 2: PRINSIP KERJA:
Gesture Hawk adalah sistem pemprosesan tiga fasa seperti yang anda lihat dalam rajah di atas.
Langkah 3: MASUKKAN DAN PEMPROSESAN:
Pengambilan input dapat difahami dalam kategori yang lebih luas yang diberikan dalam rajah di atas.
Untuk mengekstrak bentuk tangan dari persekitaran, kita perlu menggunakan pelindung atau penyaringan warna yang pasti (dalam kes ini - biru ungu '). Untuk melakukan itu, anda perlu menukar gambar dari format BGR ke HSV yang dapat dilakukan dengan menggunakan potongan kode berikut.
hsv = cv2.cvtWarna (bingkai, cv2. COLOR_BGR2HSV)
Sekarang, langkah seterusnya adalah mencari rangkaian parameter HSV yang diinginkan untuk mengeluarkan tangan melalui topeng atau penapis. Untuk ini, kaedah terbaik adalah menggunakan bar trek untuk mencari julat yang sesuai. Berikut adalah tangkapan skrin bar trek yang digunakan untuk projek ini.
Langkah 4:
Langkah 5:
Di sini, terdapat coretan kod yang diberikan di bawah untuk membuat bar trek untuk pembinaan topeng:
import cv2
import numpy sebagai npdef none (x): lulus cv2.namedWindow ('image') img = cv2. VideoCapture (0) cv2.createTrackbar ('l_H', 'image', 110, 255, none) cv2.createTrackbar ('l_S ',' gambar ', 50, 255, tidak ada) cv2.createTrackbar (' l_V ',' image ', 50, 255, none) createTrackbar ('h_S', 'image', 255, 255, none)
hsv = cv2.cvtColor (bingkai, cv2. COLOR_BGR2HSV) lH = cv2.getTrackbarPos ('l_H', 'image') lS = cv2.getTrackbarPos ('l_S', 'image') lV = cv2.getTrackbarPos ('l_ 'image') hH = cv2.getTrackbarPos ('h_H', 'image') hS = cv2.getTrackbarPos ('h_S', 'image') hV = cv2.getTrackbarPos ('h_V', 'gambar') rendah_R = np. array ([lH, lS, lV]) lebih tinggi_R = np. array ([hH, hS, hV]) mask = cv2.inRange (hsv, lower_R, Higher_R) res = cv2.bitwise_and (bingkai, bingkai, topeng = topeng) cv2.imshow ('image', res) k = cv2.waitKey (1) & 0xFF jika k == 27: pecahkan cv2.destroyAllWindows ()
Langkah 6: BAHAGIAN PEMPROSESAN:
Baiklah, kita memiliki bentuk geometri tangan, sekarang saatnya untuk memanfaatkannya dan menggunakannya untuk mengetahui gerakan tangan.
Lengkung Cembung:
Melalui lambung cembung, kami cuba memasukkan poligon yang hampir sama dengan titik-titik ekstrem yang terdapat dalam bentuknya. Gambar yang terdapat di sebelah kiri menunjukkan anggaran poligon yang telah ditetapkan pada bentuk dengan titik cembung yang ditandai dengan warna merah.
Titik cembung adalah titik-titik dalam bentuk yang paling jauh dari sisi poligon yang hampir ini. Tetapi, masalah dengan lambung cembung adalah bahawa semasa pengiraannya, kita akan mendapat susunan semua titik cembung tetapi apa yang kita perlukan adalah titik cembung runcing biru. Kami akan memberitahu anda mengapa ia diperlukan.
Untuk mencari titik cembung ini, kita perlu menggunakan formula jarak tegak lurus untuk mencari jarak titik cembung dengan sisi terdekat. Kami memerhatikan bahawa titik runcing biru memiliki jarak maksimum dari sisi dan jadi kami mendapat titik ini.
Langkah 7:
Langkah 8:
Seterusnya kita perlu mencari kecenderungan garis yang menghubungkan hujung ibu jari (atau titik yang melampau) ke titik cembung ini dengan mendatar.
Langkah 9:
Dalam kes di atas, Sudut α harus antara 0 hingga 90 darjah jika isyarat untuk belokan kiri. Itu adalah tan (α) harus positif.
Langkah 10:
Dalam kes di atas, Sudut α harus antara 180 hingga 90 darjah jika isyarat untuk belokan kanan. Iaitu tan (α) mestilah negatif.
Oleh itu, Sekiranya Tan α positif, maka pusing Kiri. Sekiranya Tan α negatif, maka Belok kanan. Sekarang, masanya untuk melihat bagaimana mengesan perintah berhenti yang paling penting.
Di sini, nisbah yang ditentukan (dijumpai oleh hit dan percubaan) diperiksa dan dalam kes maksimum nisbah jarak ini tetap berada dalam julat tertentu ini.
Langkah 11:
Akhirnya, isyarat gerakan depan dianalisis dengan fungsi matchShape () di OpenCV. Fungsi ini membandingkan bentuk dua pembilang, dalam hal ini, antara contoh latihan pada tegak dalam gambar di atas dengan kontur di sebelah kiri gambar di atas. Ia mengembalikan nilai antara 0 hingga 2 atau 3, sesuai dengan variasi yang ada dalam bentuk dua kontur. Untuk kontur yang sama, ia mengembalikan 0.
ret = cv2.matchShapes (cnt1, cnt2, 1, 0.0)
Di sini, cn1 dan cnt2 adalah dua kontur yang hendak dibandingkan.
Langkah 12: KAWALAN GERAKAN:
PySerial:
Kami menggunakan perpustakaan PySerial python untuk menukar data yang diproses menjadi data bersiri untuk disampaikan kepada Arduino Uno melalui Kabel USB Arduino. Setelah isyarat tertentu dikesan oleh opencv, kami membuat pemboleh ubah sementara yang mengatakan ‘x’ dan memberikannya beberapa nilai unik dan menukarnya menjadi input bersiri menggunakan baris perintah berikut: -
import siri #untuk mengimport perpustakaan Pyserial
serial. Serial ('', baudrate = '9600', timeout = '0') # menyiapkan output bersiri.. PORT NAME adalah nama port yang akan digunakan untuk menghantar data.
serial.write (b'x ') # x adalah abjad yang dihantar ke port … b adalah untuk menukar rentetan ini menjadi bait.
Pemprosesan Arduino:
Sekarang arduino dikodkan sedemikian rupa sehingga setiap siri x yang berlainan dipetakan secara linear ke tindakan tertentu yang bertanggungjawab untuk pergerakan robot yang lancar (katakan pengesanan gerak kiri akan memicu motor ke kanan untuk membelok ke kiri). Kita dapat mengawal pergerakan setiap roda secara terjemahan dan berpusing dengan menukar kod dengan betul.
Pemandu Motor L298N: -
Pemandu Motor digunakan sebagai pengantara antara motor dan sumber kuasa kerana motor tidak dapat dihidupkan secara langsung kerana penilaian voltan rendah. Li-Po Battery disambungkan ke terminal input 12V dan kami menyambungkan soket 5V arduino ke soket input 5V pemandu motor akhirnya menghubungkan ground Li-Po serta arduino di soket ground umum pemandu motor.
Sekarang terminal motor disambungkan pada soket yang diberikan. Akhirnya kami menyambungkan terminal input untuk motor ke soket output PWM arduino yang membolehkan kami bebas untuk memutuskan aspek putaran dan terjemahan pergerakan dengan tepat.
Disyorkan:
Bermula dengan Antaramuka Sensor I2C ?? - Antaramuka MMA8451 Anda Menggunakan ESP32s: 8 Langkah
Bermula dengan Antaramuka Sensor I2C ?? - Antaramuka MMA8451 Anda Dengan Menggunakan ESP32: Dalam tutorial ini, anda akan mempelajari semua tentang Cara memulakan, menyambung dan mendapatkan peranti I2C (Accelerometer) yang berfungsi dengan pengawal (Arduino, ESP32, ESP8266, ESP12 NodeMCU)
Sistem Pengecam dan Pemadam Kebakaran Berdasarkan Pemprosesan Imej: 3 Langkah
Sistem Pengecaman dan Pemadam Kebakaran Berdasarkan Pemprosesan Imej: Halo kawan-kawan ini adalah sistem pengesanan dan pemadam api berasaskan pemprosesan imej menggunakan Arduino
Pemprosesan Imej Dengan Raspberry Pi: Memasang OpenCV & Pemisahan Warna Imej: 4 Langkah
Pemprosesan Imej Dengan Raspberry Pi: Memasang OpenCV & Pemisahan Warna Imej: Catatan ini adalah yang pertama dari beberapa tutorial pemprosesan gambar yang akan diikuti. Kami melihat lebih dekat piksel yang membentuk gambar, belajar bagaimana memasang OpenCV pada Raspberry Pi dan kami juga menulis skrip ujian untuk menangkap gambar dan juga
Robot SCARA: Belajar Mengenai Foward dan Inverse Kinematics !!! (Plot Twist Pelajari Cara Membuat Antaramuka Masa Nyata di ARDUINO Menggunakan PEMPROSESAN !!!!): 5 Langkah (dengan Gambar)
Robot SCARA: Belajar Mengenai Kinematik Foward dan Inverse !!! (Plot Twist Pelajari Cara Membuat Antaramuka Masa Nyata di ARDUINO Menggunakan PEMPROSESAN !!!!): Robot SCARA adalah mesin yang sangat popular di dunia industri. Nama bermaksud Lengan Robot Perhimpunan Selektif Selektif atau Lengan Robot Artikulasi Selektif Selektif. Ini pada dasarnya adalah robot kebebasan tiga darjah, menjadi dua perubahan pertama
Kamera Dikendalikan Gerak Menggunakan SDK MESH: 6 Langkah (dengan Gambar)
Kamera Dikendalikan Gerak Menggunakan SDK MESH: Adakah anda mahu mengotomatisasi kamera anda untuk merakam momen terbaik haiwan kesayangan anda semasa anda tidak berada di rumah? Sensor Gerak MESH memungkinkan untuk kamera yang menyokong SDK. Sebagai contoh, kami telah meletakkan MESH Motion Sensor di sebelah makanan kucing dan mainan kucing untuk