Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Menentukan Sempadan HSV dengan Tepat untuk Pengesanan Warna dalam OpenCV menggunakan cv2.inRange?
Menentukan Sempadan HSV untuk Pengesanan Warna dengan cv2.inRange dalam OpenCV
Apabila menggunakan fungsi cv2.inRange dalam OpenCV untuk pengesanan warna, ia adalah penting untuk memilih sempadan atas dan bawah HSV (Hue, Saturation, Value) yang sesuai dengan tepat kenal pasti warna sasaran.
Pengenalpastian Masalah:
Pertimbangkan contoh imej yang mengandungi tin kopi dengan penutup oren, seperti ditunjukkan di bawah.
[Imej tin kopi dengan penutup oren]
Objektifnya adalah untuk menentukan sempadan HSV untuk diasingkan tudung oren. Pada mulanya, julat (18, 40, 90) hingga (27, 255, 255) telah dicuba, tetapi ia membuahkan hasil yang tidak dijangka.
Penyelesaian 1: Penukaran Skala
Adalah penting untuk ambil perhatian bahawa aplikasi yang berbeza mungkin menggunakan skala yang berbeza untuk nilai HSV. OpenCV menggunakan skala H: 0-179, S: 0-255, V: 0-255, manakala beberapa aplikasi lain mungkin menggunakan skala H: 0-360, S: 0-100, V: 0-100. Oleh itu, adalah perlu untuk menukar nilai HSV dengan sewajarnya.
Penyelesaian 2: Penukaran Ruang Warna
OpenCV menggunakan format warna BGR (Biru, Hijau, Merah) oleh lalai, manakala imej mungkin dalam format RGB (Merah, Hijau, Biru). Untuk menukar imej kepada HSV dengan betul, adalah penting untuk menggunakan cv2.COLOR_BGR2HSV dan bukannya cv2.COLOR_RGB2HSV.
Kod Disemak:
import cv2 import numpy as np image = cv2.imread('kaffee.png') # Revised HSV boundaries considering scale conversion ORANGE_MIN = np.array([5, 50, 50], np.uint8) ORANGE_MAX = np.array([15, 255, 255], np.uint8) # Convert image to HSV color space hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV) # Apply color filtering mask = cv2.inRange(hsv, ORANGE_MIN, ORANGE_MAX) # Save the masked image cv2.imwrite('kaffee_out.png', mask)
Pendekatan yang disemak ini harus memberikan hasil yang lebih tepat dalam mengasingkan penutup oren tin kopi.
Atas ialah kandungan terperinci Bagaimana untuk Menentukan Sempadan HSV dengan Tepat untuk Pengesanan Warna dalam OpenCV menggunakan cv2.inRange?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!