Rumah >pembangunan bahagian belakang >Tutorial Python >Bagaimana Berkesan Menentukan Sempadan Warna HSV untuk Pengesanan Objek menggunakan cv::inRange?

Bagaimana Berkesan Menentukan Sempadan Warna HSV untuk Pengesanan Objek menggunakan cv::inRange?

Barbara Streisand
Barbara Streisandasal
2024-12-02 01:56:09533semak imbas

How to Effectively Determine HSV Color Boundaries for Object Detection using cv::inRange?

Memilih Sempadan Warna untuk Pengesanan Objek dengan cv::inRange (OpenCV)

Apabila menggunakan fungsi cv::inRange untuk pengesanan warna, memilih sempadan atas dan bawah HSV yang sesuai adalah penting. Artikel ini menjawab persoalan tentang cara menentukan sempadan ini dengan berkesan berdasarkan warna minat tertentu.

Latar Belakang

HSV (Hue, Saturation, Value) ialah warna ruang yang biasa digunakan dalam pemprosesan imej. Model HSV mewakili warna sebagai tiga komponen:

  • Hue (H): Mewakili lorek warna (cth., merah, biru).
  • Tepu (S): Mengukur jumlah warna hadir di tempat teduh (0-1).
  • Nilai (V): Mewakili kecerahan warna (0-255).

Memilih Sempadan

Menentukan sempadan HSV yang betul adalah berdasarkan warna tertentu yang dikesan. Berikut ialah panduan langkah demi langkah:

  1. Tentukan Warna:

    • Gunakan alat pemilih warna untuk mengenal pasti nilai HSV bagi objek yang diminati.
    • Perhatikan bahawa skala berbeza mungkin digunakan untuk nilai HSV bergantung pada aplikasi.
  2. Laraskan Julat Hue:

    • Anali untuk sedikit variasi dalam rona dengan melaraskan julat sekitar nilai yang dikenal pasti .
    • Sebagai contoh, jika rona ialah 22 (daripada 179), julat (11-33) mungkin sesuai.
  3. Tetapkan Julat Ketepuan dan Nilai:

    • Gunakan julat yang munasabah untuk ketepuan (cth., 50-255).
    • Untuk nilai, pilih julat yang merangkumi kecerahan yang dijangkakan daripada objek.
  4. Pertimbangkan Format:

    • Pastikan penukaran HSV sesuai untuk format imej anda.
    • Sebagai contoh, OpenCV menggunakan BGR, bukan RGB untuk imej perwakilan.

Contoh

Mari kita pertimbangkan contoh pengesanan tudung oren dalam imej.

  1. HSV Nilai:

    • Dengan menggunakan pemilih warna, kami memperoleh nilai HSV sebanyak (22, 59, 100).
  2. Sempadan Dilaraskan:

    • Julat rona: (11-33)
    • Julat tepu: (50-255)
    • Julat nilai: (50-255)
  3. Kod Python:

    import cv2
    import numpy as np
    
    ORANGE_MIN = np.array([11, 50, 50], np.uint8)
    ORANGE_MAX = np.array([33, 255, 255], np.uint8)
    
    # Read and convert image
    img = cv2.imread('image.png')
    hsv_img = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
    
    # Detect orange using inRange
    mask = cv2.inRange(hsv_img, ORANGE_MIN, ORANGE_MAX)
    # Display mask
    cv2.imshow('Mask', mask)
    cv2.waitKey(0)

Atas ialah kandungan terperinci Bagaimana Berkesan Menentukan Sempadan Warna HSV untuk Pengesanan Objek menggunakan cv::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