Lý thuyết


1. Cài đặt thư viện numpy

pip install numpy
% kiểm tra version numpy
python3 -m pip show numpy

2. Tạo file ảnh màu đen với kích thước cho trước

# import thư viện
import cv2
import numpy as np
  
# Đặt kích thước file ảnh muốn tạo
height = 360
width = 480
  
# tạo file ảnh đen với kích thước định trước
# trong đó "3" là depth (ảnh màu) - số lớp (BGR)
img_black = np.zeros((height,width,3), np.uint8)
# hiển thị file ảnh img
cv2.imshow('Black Image', img_black)
  
# đợi người dùng nhấn phím bất kì
cv2.waitKey(0)
  
# xóa toàn bộ cửa sổ đã tạo ra
cv2.destroyAllWindows()

image.png

3. Tạo file ảnh màu trắng với kích thước cho trước

# import thư viện
import cv2
import numpy as np
  
# Đặt kích thước file ảnh muốn tạo
height = 360
width = 480
  
# tạo file ảnh trắng với kích thước định trước
# trong đó "3" là depth (ảnh màu) - số lớp (BGR)
img_white = np.ones((height,width,3), np.uint8)
# mỗi giá trị pixel của file ảnh mới tạo đều = 1
# để ảnh trắng hoàn toàn thì mỗi giá trị pixel phải = 255
# nên ta nhân 255 với từng giá trị điểm ảnh
img_white = 255*img_white

# hiển thị file ảnh img
cv2.imshow('White Image', img_white)
  
# đợi người dùng nhấn phím bất kì
cv2.waitKey(0)
  
# xóa toàn bộ cửa sổ đã tạo ra
cv2.destroyAllWindows()

image.png

4. Tạo file ảnh màu xanh dương với kích thước cho trước

# import thư viện
import cv2
import numpy as np
  
# Đặt kích thước file ảnh muốn tạo
height = 360
width = 480

# tạo file ảnh xanh dương với kích thước định trước
# trong đó "3" là depth (ảnh màu) - số lớp (BGR)
img_blue = np.ones((height,width,3), np.uint8)
# 3 lớp màu BGR + ảnh màu xanh dương
# suy ra lớp G, R giá trị pixel = 0
# còn lớp B giá trị mỗi pixel = 255 (tùy mức mà xanh đậm nhạt khác nhau)
img_blue[:,:] = (255,0,0)

# hiển thị file ảnh img
cv2.imshow('Blue Image', img_blue)
  
# đợi người dùng nhấn phím bất kì
cv2.waitKey(0)
  
# xóa toàn bộ cửa sổ đã tạo ra
cv2.destroyAllWindows()

image.png

4. Tạo file ảnh mix màu với kích thước cho trước

# import thư viện
import cv2
import numpy as np
  
# Đặt kích thước file ảnh muốn tạo
height = 360
width = 480

# tạo file ảnh trắng với kích thước định trước
# trong đó "3" là depth (ảnh màu) - số lớp (BGR)
img_mix = np.ones((height,width,3), np.uint8)
# mỗi giá trị pixel của file ảnh mới tạo đều = 1
# để ảnh trắng hoàn toàn thì mỗi giá trị pixel phải = 255
# nên ta nhân 255 với từng giá trị điểm ảnh
img_mix = 255*img_mix 
# tô màu đỏ từ từ (0,0) đến (100,100)
img_mix[0:100,0:100]=(0,0,255)

# hiển thị file ảnh img
cv2.imshow('Mixed Image', img_mix)
  
# đợi người dùng nhấn phím bất kì
cv2.waitKey(0)
  
# xóa toàn bộ cửa sổ đã tạo ra
cv2.destroyAllWindows()

image.png

5. Vẽ đoạn thẳng

# import thư viện
import cv2
import numpy as np
  
# Đặt kích thước file ảnh muốn tạo
height = 360
width = 480

# tạo file ảnh trắng với kích thước định trước
img = np.ones((height,width,3), np.uint8)
img = 255*img 

# vẽ đoạn thẳng line màu xanh
# điểm bắt đầu đoạn thẳng
start_point_line = (50, 200)
# điểm kết thúc đoạn thẳng
end_point_line = (400, 30)
# màu đoạn thẳng trong format BGR
blue_color = (255, 0, 0)
# độ đậm đoạn thẳng line
thickness_line = 5
cv2.line(img, start_point_line, end_point_line, blue_color, thickness_line)

# hiển thị file ảnh img
cv2.imshow('Image', img)
  
# đợi người dùng nhấn phím bất kì
cv2.waitKey(0)
  
# xóa toàn bộ cửa sổ đã tạo ra
cv2.destroyAllWindows()

image.png

6. Vẽ đường tròn