Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah saya boleh meningkatkan pengesanan warna merah dalam OpenCV menggunakan ruang warna HSV?
Pengenalan
Apabila berurusan dengan pengesanan warna merah menggunakan warna OpenCV dan HSV ruang, ia boleh menjadi mencabar untuk mendapatkan hasil yang memuaskan. Walau bagaimanapun, dengan meneroka pelbagai pendekatan dan pelarasan parameter, penambahbaikan ketara boleh dibuat.
Masalah
Untuk meningkatkan pengesanan segi empat tepat merah dalam imej, kod berikut telah digunakan:
#include <opencv2/opencv.hpp> int main() { // Image initialization Mat input = imread("path_to_image"); // HSV conversion Mat imageHSV; cvtColor(input, imageHSV, COLOR_BGR2HSV); // HSV parameter ranges int H_MIN = 0; int H_MAX = 10; int S_MIN = 70; int S_MAX = 255; int V_MIN = 50; int V_MAX = 255; // Red color range in HSV cv::inRange(imageHSV, cv::Scalar(H_MIN, S_MIN, V_MIN), cv::Scalar(H_MAX, S_MAX, V_MAX), imgThreshold0); }
Walaupun melaraskan nilai HSV menggunakan bar jejak dinamik, hasil yang optimum kekal sukar difahami.
Penyelesaian
1 . Meluaskan Julat Nilai Hue:
Dalam ruang HSV, warna merah dililit sekitar 180. Oleh itu, untuk menangkap sepenuhnya julat merah, nilai rona (H) mesti mempertimbangkan kedua-duanya [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);
2. Menyongsangkan Imej dan Mengesan Cyan:
Sebagai alternatif, pendekatan yang menarik ialah:
Kaedah ini berkesan mengesan pelengkap merah (cyan) dengan hanya satu julat dalam HSV.
// Invert original image Mat3b bgr_inv = ~bgr; // Convert to HSV Mat3b hsv_inv; cvtColor(bgr_inv, hsv_inv, COLOR_BGR2HSV); // Detect cyan range inRange(hsv_inv, Scalar(90 - 10, 70, 50), Scalar(90 + 10, 255, 255), mask);
Kesimpulan
Dengan menggabungkan teknik yang dipertingkat ini, OpenCV dapat mengesan warna merah dengan lebih tepat dengan berkesan. Pendekatan ini menyediakan asas yang kukuh untuk pengoptimuman dan aplikasi selanjutnya dalam pelbagai senario pemprosesan imej.
Atas ialah kandungan terperinci Bagaimanakah saya boleh meningkatkan pengesanan warna merah dalam OpenCV menggunakan ruang warna HSV?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!