/ / Xây dựng bảng màu bằng Python

Xây dựng bảng màu bằng Python

Con người có thể phân biệt khoảng 10 triệu màu. Để cảm nhận chúng, bạn cần một thứ gọi là bảng màu. Một bảng màu chứa các công cụ để hiển thị đầy đủ các màu mà mắt người có thể nhìn thấy. Trong thế giới thực, bạn sử dụng chúng để tạo ra các thiết kế thẩm mỹ trên giấy trong khi về mặt kỹ thuật số, bạn sử dụng chúng để thêm màu cho các thành phần màn hình.


Cuối cùng, máy tính của bạn mã hóa tất cả các sắc thái khác nhau mà bạn nhìn thấy trên màn hình bằng một định dạng cụ thể. Với Python, bạn có thể phát triển bảng màu được mã hóa RGB chỉ bằng một vài dòng mã nhờ mô-đun OpenCV và NumPy.


Mô-đun OpenCV và NumPy

Bạn có thể phân tích hình ảnh và video bằng OpenCV. Nó miễn phí, mã nguồn mở, sử dụng đơn giản và có nhiều thư viện hữu ích. Chúng cung cấp các kỹ thuật để phân loại, định vị và theo dõi các đối tượng ở cả hai chiều và ba chiều. Để cài đặt OpenCV trong môi trường của bạn, hãy mở terminal và chạy:

 pip install opencv-python 

Mô-đun NumPy là một thư viện phổ biến khác mà bạn sẽ thấy nhiều chương trình Python sử dụng. NumPy—Python số—là một mô-đun bạn có thể sử dụng để phân tích dữ liệu và tính toán khoa học. Nó cung cấp các đối tượng mảng n chiều cũng như các phép toán hỗ trợ thao tác trên các mảng này.

Để cài đặt NumPy trong môi trường của bạn, hãy thực hiện:

 pip install numpy 

Nói chung, bạn sẽ sử dụng OpenCV để xử lý hình ảnh bằng các kỹ thuật như phát hiện cạnh. Sau đó, bạn có thể sử dụng NumPy để thực hiện phân tích dữ liệu trên hình ảnh được xử lý. Sử dụng sự kết hợp này, bạn có thể tạo và giải mã mã QR, phân loại hình ảnh, thực hiện nhận dạng ký tự quang học và xây dựng hệ thống giám sát video có thể phát hiện chuyển động và theo dõi các cá nhân trong thời gian thực.

Cách xây dựng bảng màu bằng Python

Thực hiện theo các bước sau để tạo Bảng màu bằng mô-đun OpenCV và NumPy trong Python.

Bạn có thể tìm nguồn của Bảng màu Sử dụng Python trong kho lưu trữ GitHub này.

Bắt đầu bằng cách nhập các mô-đun OpenCV và NumPy. Xác định một chức năng có tên hàm rỗng() chứa câu lệnh vượt qua. Câu lệnh pass hoạt động như một trình giữ chỗ cho mã mà bạn có thể viết trong tương lai. Điều này đặc biệt hữu ích với các chức năng như createTrackbar mà bạn sẽ sử dụng sau này. Nó yêu cầu một chức năng gọi lại hợp lệ và bạn có thể chuyển emptyFunction làm trình giữ chỗ ngay bây giờ.

 import cv2
import numpy as np

def emptyFunction():
    pass

Tạo mảng ba chiều có kích thước 512 * 512 * 3 với kiểu dữ liệu uint8 bằng cách sử dụng NumPy’s số không() chức năng. Mỗi mảng sẽ bao gồm 512 cột và 512 hàng. uint8 đại diện cho một số nguyên không dấu, vì vậy chương trình sẽ điền vào mảng bằng các số không.

 image = np.zeros((512, 512, 3), np.uint8) 

Đặt tên của cửa sổ mà chương trình sẽ hiển thị và chuyển nó tới tênWindow() Chức năng tạo cửa sổ:

 windowName = "OpenCV Color Palette"
cv2.namedWindow(windowName)

Tiếp theo, tạo ba thanh theo dõi cho các thành phần màu đỏ, lục và lam. Bạn có thể làm điều này bằng OpenCV’s tạoTrackbar() chức năng. Đầu tiên, chuyển nhãn là Đỏ, Xanh lam hoặc Xanh lục. Thứ hai, bạn cần chuyển tên của cửa sổ mà bạn muốn đặt các thanh này, ví dụ: windowName.

Tham số thứ ba là giới hạn tối thiểu của thanh rãnh, trong trường hợp này là 0. Tham số thứ tư chỉ định giá trị tối đa, là 255 cho giá trị màu 24 bit. Tham số thứ năm và cũng là tham số cuối cùng là một hàm gọi lại mà createTrackbar yêu cầu một hàm hợp lệ. Đây là lý do tại sao bạn đã tạo emptyFunction trước đó để hoạt động như một trình giữ chỗ.

 cv2.createTrackbar('Blue', windowName, 0, 255, emptyFunction)
cv2.createTrackbar('Green', windowName, 0, 255, emptyFunction)
cv2.createTrackbar('Red', windowName, 0, 255, emptyFunction)

Khai báo một vòng lặp while vô hạn và chuyển tên cửa sổ cùng với hình ảnh bạn muốn hiển thị cho OpenCV’s imshow() chức năng. Vì hình ảnh chứa một mảng ba chiều gồm các số không, ban đầu chương trình sẽ hiển thị màn hình màu đen.

Kiểm tra xem người dùng đã nhấn phím thoát hay chưa bằng cách kiểm tra giá trị từ phím chờ() chống lại 27 (mã ASCII cho phím Escape). Hàm waitkey() hiển thị cửa sổ trong số mili giây đã cho hoặc cho đến khi bạn nhấn một phím. Bằng cách chuyển một cái làm đầu vào, nó sẽ hiển thị cửa sổ trong một phần nghìn giây nhưng sẽ tạo lại do vòng lặp while vô hạn.

Để có được vị trí hiện tại của thanh theo dõi, chuyển tên của thanh theo dõi cùng với tên của cửa sổ tới getTrackbarPos(). Lặp lại bước này cho ba thành phần màu riêng biệt, lam, lục và đỏ. Sử dụng toán tử lát để gán ba giá trị cho mảng hình ảnh. Thao tác này sẽ thay thế tập hợp giá trị trước đó, ban đầu là tất cả các số không, bằng các giá trị hiện tại theo vị trí của thanh rãnh.

 while (True):
    cv2.imshow(windowName, image)

    if cv2.waitKey(1) == 27:
        break

    blue = cv2.getTrackbarPos('Blue', windowName)
    green = cv2.getTrackbarPos('Green', windowName)
    red = cv2.getTrackbarPos('Red', windowName)
    image[:] = [blue, green, red]
    print(blue, green, red)

Khi người dùng nhấn phím Escape, hãy sử dụng tiêu diệtAllWindows() để đóng các cửa sổ mà chương trình đã mở:

 cv2.destroyAllWindows() 

Cuối cùng, đặt tất cả lại với nhau và chạy nó để kiểm soát và xem bảng màu của bạn.

Đầu ra của chương trình bảng màu Python

Khi chạy chương trình trên, một cửa sổ xuất hiện chứa ba thanh theo dõi cho các màu Xanh lam, Xanh lục và Đỏ. Các thanh theo dõi di chuyển trong phạm vi từ 0 đến 255. Khi bạn thay đổi giá trị của các thanh khác nhau, bạn sẽ thấy các sắc thái màu khác nhau trong phần bên dưới.

Trong ví dụ đầu tiên này, bạn có thể thấy cài đặt của thanh Blue là 0, Green là 69 và Red là 255. Màu đầu ra thu được là một sắc cam/đỏ. Ngoài ra, cửa sổ đầu cuối hiển thị các giá trị màu là 0 69 255.

Bảng màu cho màu đỏ cam

Tương tự, khi bạn đặt thanh Blue là 130, Green là 0 và Red là 75, bạn sẽ nhận được màu Indigo.

Bảng màu cho chàm

Các ứng dụng khác nhau của OpenCV

OpenCV cung cấp các chức năng có giá trị cho các tác vụ như xử lý hình ảnh, nhận dạng đối tượng, nhận dạng khuôn mặt và theo dõi. Sử dụng OpenCV, bạn có thể tạo ra các ứng dụng thị giác máy tính thời gian thực sẽ là một lợi ích trong các lĩnh vực như người máy, tự động hóa công nghiệp, hình ảnh y tế và hệ thống giám sát.

Tương lai của thị giác máy tính đầy hứa hẹn. Bạn sẽ có thể sử dụng thị giác máy tính để giúp người khiếm thị, mang lại sự phát triển tốt hơn trong nông nghiệp, tăng cường an toàn đường bộ bằng Xe tự lái và thậm chí điều hướng các hành tinh khác, chẳng hạn như sao Hỏa.

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *