Menggunakan OpenCV untuk Meningkatkan Pengesanan Warna Merah
Pengesanan warna yang tepat adalah penting dalam pelbagai tugas penglihatan komputer. Artikel ini menangani cabaran khusus untuk mengesan objek merah menggunakan perpustakaan OpenCV. Dengan meneroka ruang warna HSV dan memperhalusi parameter ambang, kami menyasarkan untuk meningkatkan pengesanan segi empat tepat merah dalam imej.
Pernyataan Masalah
Diberikan imej dengan segi empat tepat merah, matlamatnya adalah untuk mengasingkan dan mengesan objek merah menggunakan fungsi inRange OpenCV dan ruang warna HSV. Walau bagaimanapun, percubaan awal menggunakan julat parameter yang disediakan tidak membuahkan hasil yang memuaskan.
Penyelesaian Cadangan: Ruang Warna HSV
Dalam ruang HSV, rona merah melilit nilai 180 darjah. Oleh itu, untuk mengesan merah dengan berkesan, kita perlu mempertimbangkan nilai daripada kedua-dua [0, 10] dan [170, 180]:
inRange(hsv, Scalar(0, 70, 50), Scalar(10, 255, 255), mask1); inRange(hsv, Scalar(170, 70, 50), Scalar(180, 255, 255), mask2); Mat1b mask = mask1 | mask2;
Dengan menggabungkan kedua-dua topeng ini, kami menangkap julat warna merah dengan lebih tepat, seperti yang dilihat dalam hasil yang lebih baik.
Pendekatan Alternatif: HSV Imej Terbalik
Perspektif lain tentang masalah ini ialah menyongsangkan imej BGR asal sebelum menukarnya kepada HSV. Dalam imej terbalik, warna merah menjadi sian, menjadikannya lebih mudah untuk dikesan:
Mat3b bgr_inv = ~bgr; cvtColor(bgr_inv, hsv_inv, COLOR_BGR2HSV); inRange(hsv_inv, Scalar(90 - 10, 70, 50), Scalar(90 + 10, 255, 255), mask);
Pendekatan ini membolehkan kami mencari warna sasaran tunggal (cyan) dalam imej HSV terbalik, memberikan alternatif yang sah kepada pendekatan dwi-julat.
Kesimpulan
Dengan memperhalusi parameter pengesanan warna dan menggunakan sifat khusus ruang warna HSV, kami boleh meningkatkan pengesanan merah dengan ketara objek menggunakan OpenCV. Penyelesaian yang disediakan menggambarkan fleksibiliti dan keberkesanan OpenCV dalam mengendalikan senario pengesanan warna yang mencabar.
Atas ialah kandungan terperinci Bagaimanakah fungsi inRange OpenCV boleh dioptimumkan untuk pengesanan warna merah yang tepat dalam imej?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!