Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana untuk Menentukan Sempadan HSV dengan Tepat untuk Pengesanan Warna dalam OpenCV menggunakan cv2.inRange?

Bagaimana untuk Menentukan Sempadan HSV dengan Tepat untuk Pengesanan Warna dalam OpenCV menggunakan cv2.inRange?

Susan Sarandon
Susan Sarandonasal
2024-12-16 06:44:09773semak imbas

How to Accurately Determine HSV Boundaries for Color Detection in OpenCV using 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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn