Làm cách nào để nhận dạng màu từ hình ảnh Python?

Trung cấp trong Python? . Chúng tôi sẽ tạo một chương trình Python có thể nhận dạng màu từ hình ảnh JPEG hoặc PNG. Nó cũng sẽ cung cấp cho bạn tên và giá trị RGB của màu. Vì vậy, chúng ta hãy đi thẳng vào nó

Các mô-đun bắt buộc.
* cv2
* gấu trúc

Cài đặt các mô-đun

pip install cv2
pip install pandas

sau đó

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()

Bạn có thể thay thế đường dẫn tệp bằng hình ảnh của riêng bạn

Và bạn có nó rồi đấy. Cảm ơn bạn đã đọc

Thêm nội dung tại PlainEnglish. io. Đăng ký nhận bản tin hàng tuần miễn phí của chúng tôi. Theo dõi chúng tôi trên Twitter và LinkedIn. Tham gia cộng đồng của chúng tôi

Nếu bạn chưa từng nghe về Computer Vision trước đây, thì đây là thời điểm tốt nhất để tìm hiểu về nó. Hầu hết các lĩnh vực máy học và trí tuệ nhân tạo đều được kết nối mạnh mẽ với Thị giác máy tính. Khi chúng ta đang phát triển và khám phá, việc nhìn thấy thế giới bên ngoài có tác động lớn đến sự phát triển của chúng ta. Điều này cũng tương tự đối với máy móc, chúng nhìn thế giới bên ngoài bằng hình ảnh và những hình ảnh đó được chuyển thành giá trị dữ liệu mà máy tính có thể hiểu được

Trong các bài viết trước, tôi đã hướng dẫn cách nhận diện khuôn mặt và cả cách nhận diện khuôn mặt trong ảnh, đây là những dự án tuyệt vời để thực hành python trong trí tuệ nhân tạo và thị giác máy tính. Hãy làm một số công việc

Mục lục
  • Bắt đầu
  • thư viện
  • Xác định hình ảnh
  • Nhận dạng màu sắc
  • Đăng kí
  • Kết quả

Bắt đầu

Chúng tôi sẽ sử dụng ba mô-đun chính cho dự án này. Họ là NumPy, Pandas và OpenCv. OpenCv là một thư viện được tối ưu hóa cao, tập trung vào các ứng dụng thời gian thực

OpenCV (Open Source Computer Vision Library) là một thư viện phần mềm thị giác máy tính và máy học mã nguồn mở. OpenCV được xây dựng để cung cấp cơ sở hạ tầng chung cho các ứng dụng thị giác máy tính và để đẩy nhanh việc sử dụng nhận thức máy móc trong các sản phẩm thương mại

Nguồn. https. //opencv. tổ chức

Nhận email bất cứ khi nào Behic Guven xuất bản

Nhận email bất cứ khi nào Behic Guven xuất bản. Bằng cách đăng ký, bạn sẽ tạo một tài khoản Medium nếu bạn chưa có…

người khám phá cuộc sống. Trung bình. com

thư viện

Như đã đề cập trước đó, có ba mô-đun chúng tôi sẽ sử dụng cho dự án này. Để sử dụng các module này chúng ta phải cài đặt các thư viện cần thiết. Cài đặt thư viện là một bước rất dễ dàng bằng cách sử dụng pip. Pip là một công cụ quản lý gói. Chúng tôi sẽ thực hiện cài đặt bằng giao diện dòng lệnh. Đây là dòng cài đặt cả 3 thư viện cùng lúc

pip install numpy pandas opencv-python

Sau khi cài đặt hoàn tất, chúng ta phải nhập chúng vào chương trình của mình. Mở một tệp mới trong trình chỉnh sửa mã yêu thích của bạn. Đây là mã về cách nhập các thư viện đã cài đặt

import numpy as np
import pandas as pd
import cv2

OpenCv được nhập dưới dạng cv2. Và đối với các thư viện khác, chúng tôi đã nhập chúng "dưới dạng" để dễ gọi chúng hơn trong chương trình

Hoàn hảo. Bây giờ, chúng ta có thể chuyển sang bước tiếp theo, nơi chúng ta sẽ xác định hình ảnh mà chúng ta muốn sử dụng để kiểm tra ứng dụng nhận dạng màu của mình

Xác định hình ảnh

Bạn có thể chọn bất kỳ hình ảnh nào bạn muốn. Tôi sẽ lưu hình ảnh của mình vào cùng thư mục với chương trình của mình, điều này giúp dễ dàng tìm và nhập hơn

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

Để cung cấp cho bạn một số ý tưởng, đây là hình ảnh tôi sẽ sử dụng cho dự án này

Ảnh của Steve Johnson từ Pexels

Tuyệt quá. Bạn đã sẵn sàng cho một số chương trình?

Nhận dạng màu sắc

Hãy để tôi hỏi bạn một câu hỏi hay. Bạn có biết rằng máy móc rất tinh khiết? . Chúng giống như một bức tranh lớn màu trắng. Và chương trình của bạn là bàn chải của bạn. )

dạy màu sắc

Đầu tiên, chúng ta phải dạy chúng màu sắc. Để làm điều đó, chúng tôi cần dữ liệu bao gồm tên màu và một số giá trị để khớp với các màu đó. Vì hầu hết các màu có thể được xác định bằng Red, Green và Blue. Đó là lý do tại sao chúng tôi sẽ sử dụng định dạng RGB làm điểm dữ liệu của mình. Tôi đã tìm thấy tệp csv có sẵn với khoảng 1000 tên màu và giá trị RGB. Đây là liên kết GitHub. Chúng tôi sẽ sử dụng tệp csv này trong chương trình của chúng tôi. Ảnh chụp màn hình của tệp để cung cấp cho bạn một số ý tưởng

màu sắc. csv

Hãy nhập màu sắc. csv vào chương trình của chúng tôi bằng phương thức read_csv. Vì tệp csv mà chúng tôi đã tải xuống không có tên cột nên tôi sẽ xác định chúng trong chương trình. Quá trình này được gọi là thao tác dữ liệu

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

Biến toàn cầu

Trong các bước sau, chúng ta sẽ xác định hai chức năng. Để ứng dụng hoạt động trơn tru, chúng ta cần một số biến toàn cục. Bạn sẽ biết các biến toàn cục có thể hữu ích như thế nào khi làm việc với các hàm

clicked = False
r = g = b = xpos = ypos = 0

Chức năng nhận biết màu sắc

Hàm này sẽ được gọi khi chúng ta double click vào một vùng của ảnh. Nó sẽ trả về tên màu và giá trị RGB của màu đó. Đây là nơi phép màu xảy ra

def recognize_color(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

Chức năng nhấp chuột

Chức năng này được sử dụng để xác định quy trình nhấp đúp của chúng tôi. Chúng tôi sẽ cần nó khi tạo phần ứng dụng của chúng tôi

________số 8

Tôi hy vọng bạn vẫn còn với tôi. Nó có thể trông hơi phức tạp nhưng khi bạn bắt đầu viết chúng trong trình chỉnh sửa của mình, bức tranh toàn cảnh sẽ trở nên sống động. Tôi cố gắng hết sức để giữ cho mọi thứ đơn giản và dễ hiểu. Tôi sẽ thêm thông tin liên hệ của mình vào cuối bài viết này, hãy liên hệ với tôi nếu bạn cần bất kỳ trợ giúp nào

Đăng kí

Tôi rất vui vì bạn đã làm được đến bước này. Trong bước này, chúng tôi sẽ mở hình ảnh dưới dạng một cửa sổ mới bằng các phương thức OpenCV. Và trong cửa sổ đó, chúng ta sẽ sử dụng các chức năng mà chúng ta đã xác định trước đó. Ứng dụng này rất đơn giản, nó trả về tên màu và các giá trị màu khi bạn nhấp đúp chuột vào một khu vực nhất định trên hình ảnh

Cửa sổ ứng dụng

Trước tiên, hãy để tôi chỉ cho bạn cách mở tệp hình ảnh dưới dạng cửa sổ mới bằng OpenCV

cv2.namedWindow('Color Recognition App')

Thứ hai, hãy gọi hàm click chuột mà chúng ta đã tạo. Điều này mang lại nhiều chức năng hơn cho ứng dụng của chúng tôi

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()
0

Ứng dụng

Đây là vòng lặp while để bắt đầu cửa sổ ứng dụng của chúng ta hoạt động

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()
1

Đóng ứng dụng

Nếu bạn đã làm việc với các dự án OpenCV, bạn có thể quen thuộc với bước này. Chúng ta phải xác định cách kết thúc và đóng cửa sổ ứng dụng. Nếu không, nó sẽ chạy mãi mãi vì chúng ta đã sử dụng while(1) để khởi động ứng dụng. Thêm các dòng sau đây là một cách thực hành tốt cho các dự án trong tương lai của bạn

import numpy as np
import pandas as pd
import cv2
0

Kết quả

Hiện tại mình đang làm video demo cho dự án này. Tôi đã nhận được nhiều phản hồi tích cực về các video trình diễn, nó giúp hiểu rõ hơn về chương trình và quy trình đăng ký. Video sẽ được đăng trên kênh youtube của tôi

(Cập nhật. Video đã sẵn sàng và có sẵn bên dưới. Cảm ơn 😊 )

trình diễn video

chúc mừng. Bạn đã tạo một ứng dụng thị giác máy tính thú vị có thể nhận dạng màu sắc trong hình ảnh. Bây giờ, bạn đã có một số ý tưởng về cách sử dụng thị giác máy tính trong một dự án thực tế. Hy vọng rằng bạn thích đọc bài viết của tôi. Tôi sẽ rất vui nếu hôm nay bạn học được điều gì mới. Làm việc trên các dự án lập trình thực hành như dự án này là cách tốt nhất để nâng cao kỹ năng mã hóa của bạn

Làm cách nào để xác định màu trong ảnh?

Cách tìm mã màu của hình ảnh? .
Tải lên hình ảnh của bạn. Tải lên hoặc kéo và thả hình ảnh bạn muốn chọn màu vào bộ chọn màu của Fotor từ hình ảnh
Chọn một màu từ hình ảnh. Bấm vào biểu tượng “Eyedropper” rồi chọn màu mong muốn trên ảnh để lấy mã màu
Sao chép mã màu

Làm cách nào để phát hiện màu trong OpenCV Python?

Các bước để phát hiện đối tượng có màu tương tự bằng OpenCV .
Nhập các gói cần thiết và đọc hình ảnh
Phát hiện màu từ hình ảnh đầu vào và tạo mặt nạ
Loại bỏ tiếng ồn không cần thiết khỏi mặt nạ
Áp dụng mặt nạ cho hình ảnh
Vẽ ranh giới của các đối tượng được phát hiện

Làm cách nào để phát hiện màu xanh lục trong OpenCV Python?

Giá trị RGB cho màu xanh lục là [0, 255, 0] .

Thuật toán nào được sử dụng để phát hiện màu sắc?

Thuật toán KMeans tạo các cụm dựa trên số lượng cụm được cung cấp. Trong trường hợp của chúng tôi, nó sẽ tạo thành các cụm màu và các cụm này sẽ là màu trên cùng của chúng tôi. Sau đó, chúng tôi điều chỉnh và dự đoán trên cùng một hình ảnh để trích xuất dự đoán vào các nhãn biến. Chúng tôi sử dụng Bộ đếm để đếm tất cả các nhãn.