Identifikasi warna dalam gambar python

Menengah dengan Python? . Kami akan membuat program Python yang dapat mengenali warna dari gambar JPEG atau PNG. Itu juga akan memberi Anda nama dan nilai RGB dari warna. Jadi mari kita langsung ke dalamnya

Modul Diperlukan
* cv2
* panda

Pemasangan modul

pip install cv2
pip install pandas

Kemudian

def color_recognition():
# required modules
import cv2 # pip install cv2
import pandas as pd # pip install pandas

img_path = "colorpic.jpg"
img = cv2.imread(img_path)

# declaring global variables (are used later on)
clicked = False
r = g = b = x_pos = y_pos = 0

# Reading csv file with pandas and giving names to each column
index = ["color", "color_name", "hex", "R", "G", "B"]
csv = pd.read_csv('colors.csv', names=index, header=None)

# function to calculate minimum distance from all colors and get the most matching color
def get_color_name(R, G, B):
minimum = 10000
for i in range(len(csv)):
d = abs(R - int(csv.loc[i, "R"])) + abs(G - int(csv.loc[i, "G"])) + abs(B - int(csv.loc[i, "B"]))
if d <= minimum:
minimum = d
cname = csv.loc[i, "color_name"]
return cname

# function to get x,y coordinates of mouse double click
def draw_function(event, x, y, flags, param):
if event == cv2.EVENT_LBUTTONDBLCLK:
global b, g, r, x_pos, y_pos, clicked
clicked = True
x_pos = x
y_pos = y
b, g, r = img[y, x]
b = int(b)
g = int(g)
r = int(r)

cv2.namedWindow('image')
cv2.setMouseCallback('image', draw_function)

while True:

cv2.imshow("image", img)
if clicked:

# cv2.rectangle(image, start point, endpoint, color, thickness)-1 fills entire rectangle
cv2.rectangle(img, (20, 20), (750, 60), (b, g, r), -1)

# Creating text string to display( Color name and RGB values )
text = get_color_name(r, g, b) + ' R=' + str(r) + ' G=' + str(g) + ' B=' + str(b)

# cv2.putText(img,text,start,font(0-7),fontScale,color,thickness,lineType )
cv2.putText(img, text, (50, 50), 2, 0.8, (255, 255, 255), 2, cv2.LINE_AA)

# For very light colours we will display text in black colour
if r + g + b >= 600:
cv2.putText(img, text, (50, 50), 2, 0.8, (0, 0, 0), 2, cv2.LINE_AA)

clicked = False

# Break the loop when user hits 'esc' key
if cv2.waitKey(20) & 0xFF == 27:
break

cv2.destroyAllWindows()
color_recognition()
_

Anda dapat mengganti jalur file dengan gambar Anda sendiri

Dan begitulah. Terima kasih telah membaca

Lebih banyak konten di PlainEnglish. io. Mendaftar untuk buletin mingguan gratis kami. Ikuti kami di Twitter dan LinkedIn. Bergabunglah dengan komunitas kami Perselisihan

Halo, ada sesama programmer. Hari ini dalam tutorial ini kita akan mempelajari cara mendeteksi berbagai warna pada gambar dengan bantuan pustaka OpenCV dengan Python

Pengantar Deteksi Warna

Proses pendeteksian nama warna apa pun dalam suatu gambar dikenal sebagai deteksi warna. Ini adalah tugas yang sangat sederhana untuk manusia, tetapi tidak sesederhana itu untuk komputer. Mata dan otak manusia bekerja sama untuk mengubah cahaya menjadi warna. Sinyal ditransmisikan ke otak melalui reseptor cahaya di mata kita. Warna tersebut kemudian dikenali oleh otak kita

Dalam tutorial pendeteksian warna Python ini, kami akan membuat aplikasi yang memungkinkan Anda mendapatkan nama warna hanya dengan mengkliknya. Akibatnya, kita memerlukan file data dengan nama dan nilai warna. Kemudian kita akan menghitung jarak antara setiap warna dan memilih yang jaraknya paling kecil

Dataset Digunakan untuk Deteksi Warna

Merah, hijau, dan biru adalah tiga warna primer yang membentuk warna apa pun yang tersedia. Setiap nilai warna di komputer didefinisikan sebagai angka antara 0 dan 255. Sebuah warna dapat diwakili di sekitar 16. 5 juta cara berbeda. Kita perlu menerjemahkan nilai setiap warna ke namanya menggunakan kumpulan data kita. Kami akan bekerja dengan kumpulan data yang berisi nilai RGB beserta namanya

Mengimpor OpenCV

Langkah pertama adalah mengimpor semua modul yang diperlukan bersama dengan OpenCV, lalu memuat gambar tetapi pastikan gambar berada di dalam folder yang sama dengan file kode

import cv2
import numpy as np
import pandas as pd

img = cv2.imread("sample.jpg")

Muat "warna. csv”.

Kami menggunakan pustaka pandas_ untuk melakukan operasi pada file data seperti CSV. Dan fungsi pd.read_csv()_ digunakan untuk memuat dan membaca file CSV. Kami juga menetapkan setiap kolom dengan nama dalam daftar indeks untuk mempermudah akses

index = ["color", "color_name", "hex", "R", "G", "B"]
data = pd.read_csv("colors.csv", names=index, header=None)

Membuat jendela dan fungsi callback

Pertama, kita harus membuat jendela baru di mana gambar masukan akan ditampilkan. Kemudian, kami menyediakan fungsi panggilan balik yang akan diaktifkan hanya jika peristiwa mouse terjadi di seluruh gambar

cv2.namedWindow("Color Detection Window")
cv2.setMouseCallback("Color Detection Window",call_back_function)
_

Tapi sekarang kita harus membuat fungsi callback yang disebutkan dengan nama call_back_function

Membuat Fungsi Callback

Mari kita pahami apa yang akan dilakukan fungsi callback ini. Ini akan menghitung nilai rgb dari piksel yang kita klik dua kali dan koordinat (x,y) dari posisi mouse disimpan

def call_back_function (event, x,y,flags,param):
  if event == cv2.EVENT_LBUTTONDBLCLK:
        global b,g,r,xpos,ypos, clicked
        clicked = True
        xpos = x
        ypos = y
        b,g,r = img[y,x]
        b = int(b)
        g = int(g)
        r = int(r)

Mengekstrak nama warna dari nilai rgb

Sekarang kita telah mengekstrak nilai rgb dari gambar, sekarang kita perlu mengubah nilai rgb menjadi nama warna. Hal yang sama dilakukan pada fungsi di bawah ini

def get_Color_Name(R,G,B):
    minimum = 10000
    for i in range(len(csv)):
        d = abs(R- int(csv.loc[i,"R"])) + abs(G-           int(csv.loc[i,"G"]))+ abs(B- int(csv.loc[i,"B"]))
        if(d<=minimum):
            minimum = d
            cname = csv.loc[i,"color_name"]
    return cname
_

Untuk mendapatkan nama warna, kami menghitung jarak (d) yang memberi tahu kami seberapa dekat kami dengan warna tertentu dan memilih salah satu yang menghasilkan jarak minimum. Jarak dihitung menggunakan rumus berikut

d = abs(Red — ithRedColor) + (Green — itthGreenColor) + (Blue — ithBlueColor)

Menampilkan Hasil di jendela

Kami menggunakan fungsi cv2.imshow() untuk menggambar gambar di jendela yang kami buat sebelumnya. Ketika pengguna mengklik dua kali pada jendela, sebuah persegi panjang digambar pada gambar yang mendapatkan nama warna pada jendela menggunakan fungsi

index = ["color", "color_name", "hex", "R", "G", "B"]
data = pd.read_csv("colors.csv", names=index, header=None)
0 dan
index = ["color", "color_name", "hex", "R", "G", "B"]
data = pd.read_csv("colors.csv", names=index, header=None)
1 masing-masing

while(1):
  cv2.imshow("Color Detection Window",img)
  if (clicked):
    cv2.rectangle(img,(20,20), (750,60), (b,g,r), -1)
    text = getColorName(r,g,b)+'R='+str(r)+'G='+ str(g)+'B='+ str(b)
    cv2.putText(img, text,(50,50),2,0.8, (255,255,255),2,cv2.LINE_AA)
    if(r+g+b>=600):
       cv2.putText(img, text,(50,50),2,0.8,(0,0,0),2,cv2.LINE_AA)
    clicked=False
    if cv2.waitKey(20) & 0xFF ==27:
      break
cv2.destroyAllWindows()
_

Keluaran Sampel

Identifikasi warna dalam gambar python
Jendela Deteksi Warna Opencv

Identifikasi warna dalam gambar python
Deteksi Warna Merah Terdeteksi

Identifikasi warna dalam gambar python
Deteksi Warna Cyan Terdeteksi

Keluaran pada Gambar Lain

Identifikasi warna dalam gambar python
Gambar Deteksi Warna Kulit2

Kesimpulan

Hari ini kita belajar cara mendeteksi warna menggunakan OpenCV dalam bahasa pemrograman Python. Harap Anda belajar sesuatu

Bagaimana cara mendeteksi warna dari gambar menggunakan Python OpenCV?

Daftar Isi .
Langkah 1. Impor Perpustakaan dan baca gambarnya
Langkah 2. Tentukan batas untuk warna
Langkah 3. Deteksi warna menggunakan cv2. dalam lingkup()
Langkah 4. Lakukan Bitwise DAN dengan gambar masukan

Bisakah OpenCV mendeteksi warna?

OpenCV memiliki beberapa fungsi bawaan untuk melakukan operasi Deteksi Warna dan Segmentasi . Lalu apa itu Teknik Deteksi Warna dan Segmentasi dalam Pengolahan Citra? .

Apa itu deteksi warna dalam pemrosesan gambar?

Algoritme pendeteksian warna mengidentifikasi piksel dalam gambar yang cocok dengan warna atau rentang warna tertentu . Warna piksel yang terdeteksi kemudian dapat diubah untuk membedakannya dari gambar lainnya.