Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah kita boleh meningkatkan pengesanan warna merah dalam OpenCV menggunakan ruang warna HSV?
Pengesanan Warna Merah yang Dipertingkatkan dalam OpenCV menggunakan Ruang Warna HSV
Artikel ini bertujuan untuk meningkatkan ketepatan pengesanan warna merah dalam imej menggunakan HSV OpenCV warna ruang.
Masalah:
Mengesan segi empat tepat merah dalam imej menggunakan cv::inRange dan ruang warna HSV sedang menghasilkan hasil yang tidak memuaskan. Hasil yang diingini ialah mengasingkan segi empat tepat merah dengan berkesan.
Penyelesaian:
Dalam HSV, warna merah menjangkau julat yang melilit nilai 180. Untuk mengambil kira ini, julat HSV harus memasukkan nilai kedua-dua dalam [0,10] dan [170, 180].
Kemas Kini Kod:
Coretan kod berikut menunjukkan pendekatan yang dikemas kini:
# Include OpenCV library import cv2 # Define HSV range for red color H_MIN1 = 0 H_MAX1 = 10 H_MIN2 = 170 H_MAX2 = 180 S_MIN = 70 S_MAX = 255 V_MIN = 50 V_MAX = 255 # Read the input image image = cv2.imread('image.png') # Convert to HSV color space hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV) # Create masks for the two ranges of red hue mask1 = cv2.inRange(hsv, (H_MIN1, S_MIN, V_MIN), (H_MAX1, S_MAX, V_MAX)) mask2 = cv2.inRange(hsv, (H_MIN2, S_MIN, V_MIN), (H_MAX2, S_MAX, V_MAX)) # Combine the masks mask = cv2.bitwise_or(mask1, mask2) # Display the resulting mask cv2.imshow('Mask', mask) cv2.waitKey(0)
Pendekatan Alternatif: Pengesanan Cyan
Kaedah lain yang berkesan ialah menyongsangkan imej BGR, menukar ia kepada HSV, dan asingkan warna cyan (pelengkap kepada merah). Ini menghapuskan keperluan untuk menyemak berbilang julat warna.
Kod untuk Pengesanan Cyan:
# Invert the BGR image inverted = 255 - image # Convert to HSV color space hsv_inverted = cv2.cvtColor(inverted, cv2.COLOR_BGR2HSV) # Isolate cyan color cyan_mask = cv2.inRange(hsv_inverted, (90-10, S_MIN, V_MIN), (90+10, S_MAX, V_MAX)) # Display the cyan mask cv2.imshow('Cyan Mask', cyan_mask) cv2.waitKey(0)
Atas ialah kandungan terperinci Bagaimanakah kita boleh meningkatkan pengesanan warna merah dalam OpenCV menggunakan ruang warna HSV?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!