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 cv2pip 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-pythonSau 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 npimport 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 = Falser = 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ố 8Tô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 npimport pandas as pd
import cv20
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 videochú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