Thị giác máy tính với OpenCV-Python Bài 2, Phần 5: Hiển thị bảng điều chỉnh màu

Thị giác máy tính với OpenCV-Python Bài 2, Phần 5: Hiển thị bảng điều chỉnh màu

Thị giác máy tính với OpenCV-Python Bài 2, Phần 5: Hiển thị bảng điều chỉnh màu

15:13 - 10/12/2021

Trong bài này chúng ta sẽ tìm hiểu cách hiển thị bảng điều chỉnh màu thông qua các hàm: cv2.getTrackbarPos(), cv2.createTrackbar(), ...

Thị giác máy tính với OpenCV-Python Bài 7 Phần 3: Nhận diện khuôn mặt
Thị giác máy tính với OpenCV-Python Bài 7 Phần 2: Phát hiện người đi bộ trong video
Thị giác máy tính với OpenCV-Python Bài 7 Phần 1: Phát hiện người đi bộ trong hình ảnh
Thị giác máy tính với OpenCV-Python Bài 6 Phần 2: Phép trừ nền
Thị giác máy tính với OpenCV-Python Bài 6 Phần 1: Bắt bám đối tượng với Meanshift và Camshift

 

Phần code demo

Chúng ta sẽ tạo một ứng dụng đơn giản hiển thị màu sắc mong muốn, trong đó bao gồm một cửa sổ hiển thị màu và ba thanh điều chỉnh để chỉ định từng màu B, G, R. Người dùng có thể trượt thanh điều chỉnh và thay đổi màu cửa sổ tương ứng. Theo mặc định, màu ban đầu sẽ được để ở màu Đen.

Đối với hàm cv2.getTrackbarPos(), đối số đầu tiên là tên thanh điều chỉnh màu, đối số thứ hai là tên cửa sổ mà nó được đính kèm, đối số thứ ba là giá trị mặc định, đối số thứ tư là giá trị tối đa và đối số thứ năm là hàm gọi lại được thực thi mỗi khi giá trị thanh điều chỉnh màu thay đổi. Hàm gọi lại luôn có một đối số mặc định là vị trí thanh điều chỉnh màu. Trong giới hạn của bài này, hàm gọi lại không làm gì cả, do đó chúng ta chỉ đơn giản là gán “pass” để bỏ qua.

Một ứng dụng khác có thể được thêm vào, ví dụ như nút bấm hoặc công tắc. Theo mặc định, OpenCV không có chức năng nút bấm. Chúng ta có thể sử dụng thanh điều chỉnh màu để thực hiện chức năng như vậy. Đối với bài này, chúng ta sẽ tạo một công tắc trong đó ứng dụng chỉ hoạt động nếu công tắc được BẬT,  còn ngược lại, màn hình luôn hiển thị màu đen.

  1. import cv2
  2. import numpy as np
  3. def nothing(x):
  4.     pass
  5. # Create a black image, a window
  6. img = np.zeros((300, 512, 3), np.uint8)
  7. cv2.namedWindow('image')
  8. # create trackbars for color change
  9. cv2.createTrackbar('R', 'image', 0, 255, nothing)
  10. cv2.createTrackbar('G', 'image', 0, 255, nothing)
  11. cv2.createTrackbar('B', 'image', 0, 255, nothing)
  12. # create switch for ON/OFF functionality
  13. switch = '0 : OFF \n1 : ON'
  14. cv2.createTrackbar(switch, 'image', 0, 1, nothing)
  15. while(1):
  16.     cv2.imshow('image', img)
  17.     k = cv2.waitKey(1) & 0xFF
  18.     if k == 27:
  19.          break
  20.     # get current positions of four trackbars
  21.     r = cv2.getTrackbarPos('R', 'image')
  22.     g = cv2.getTrackbarPos('G', 'image')
  23.     b = cv2.getTrackbarPos('B', 'image')
  24.     s = cv2.getTrackbarPos(switch, 'image')
  25.     if s == 0:
  26.          img[:] = 0
  27.     else:
  28.          img[:] = [b, g, r]
  29. cv2.destroyAllWindows()

 

Kết quả đoạn code trên:

Khi chưa bật công tắc:

 

Khi đã bật công tắc và điều chỉnh các thanh màu:

Như vậy là đã kết thúc các phần trong bài 2. Ở bài tiếp theo chúng ta sẽ tìm hiểu các thao tác cơ bản trên hình ảnh.

 

 

(Sưu tầm)
VIỆN IMC
Tòa nhà IMC Tower, Số 176 Trường Chinh, Phường Khương
Thượng, Quận Đống Đa, Thành phố Hà Nội, Việt Nam
Tel/Fax : (+84) 24 3566 6232 / 24 3566 6234
Email: contact@imc.org.vn   Website: https://imc.org.vn