Các hoạt động cơ bản của OpenCV là vẽ lên các hình ảnh. Khả năng thêm các hình dạng hình học khác nhau như đường thẳng, hình tròn và hình chữ nhật, v.v.
Thường làm việc với phân tích hình ảnh, chúng tôi muốn làm nổi bật một phần của hình ảnh, chẳng hạn bằng cách thêm một hình chữ nhật xác định phần đó. Cũng như ví dụ một mũi tên để chỉ điều gì đó.
cv2.line () - Hàm này được sử dụng để vẽ đường thẳng trên hình ảnh.
cv2.rectangle () - Hàm này được sử dụng để vẽ hình chữ nhật trên hình ảnh.
cv2.circle () - Hàm này được sử dụng để vẽ hình tròn trên hình ảnh.
cv2.putText () - Hàm này được sử dụng để viết văn bản trên hình ảnh.
cv2.ellipse () - Hàm này được sử dụng để vẽ hình elip trên hình ảnh.
Mã mẫu
import numpy as npimport cv2my_img =np.zeros ((350, 350, 3), dtype ="uint8") cv2.imshow ('Window', my_img) cv2.waitKey (0) cv2.destroyAllWindows ()Đầu ra
Để vẽ một đường
Để vẽ một đường thẳng, hàm cv2.line () được sử dụng. Hàm này có năm đối số
- Đối tượng hình ảnh để vẽ
- Tọa độ điểm bắt đầu (x, y)
- Tọa độ điểm cuối (x, y)
- Màu nét trong BGR (không phải RGB, cần lưu ý)
- Độ dày nét vẽ (tính bằng pixel)
Mã mẫu
import numpy as npimport cv2my_img =np.zeros ((350, 350, 3), dtype ="uint8") # create for linecv2.line (my_img, (202, 220), (100, 160), (0 , 20, 200), 10) cv2.imshow ('Window', my_img) cv2.waitKey (0) cv2.destroyAllWindows ()
Đầu ra
Để vẽ Hình chữ nhật
Để vẽ một hình chữ nhật, hàm cv2.rectangle () được sử dụng. Hàm này chấp nhận năm tham số đầu vào.
- Đối tượng hình ảnh để vẽ
- Tọa độ của đỉnh ở trên cùng bên trái (x, y)
- Tọa độ của đỉnh dưới bên phải (x, y)
- Màu nét trong BGR (không phải RGB, cần lưu ý)
- Độ dày nét vẽ (tính bằng pixel)
Mã mẫu
nhập numpy dưới dạng npimport cv2my_img =np.zeros ((400, 400, 3), dtype ="uint8") # tạo hình chữ nhậtcv2.rectangle (my_img, (30, 30), (300, 200), (0 , 20, 200), 10) cv2.imshow ('Window', my_img) # cho phép chúng tôi xem hình ảnh # cho đến khi đóng lại một cách mạnh mẽcv2.waitKey (0) cv2.destroyAllWindows ()
Đầu ra
Để vẽ một vòng tròn
Để vẽ một đường tròn, hàm cv2.circle () được sử dụng. Hàm này chấp nhận năm tham số đầu vào.
- Đối tượng hình ảnh để vẽ
- Tọa độ trung tâm (x, y)
- Bán kính của hình tròn
- Màu nét trong BGR (không phải RGB, cần lưu ý)
- Độ dày nét vẽ (tính bằng pixel)
Mã mẫu
nhập numpy dưới dạng npimport cv2my_img =np.zeros ((400, 400, 3), dtype ="uint8") # tạo vòng tròncv2.circle (my_img, (200, 200), 80, (0, 20, 200) , 10) cv2.imshow ('Window', my_img) cv2.waitKey (0) cv2.destroyAllWindows ()
Đầu ra
Để vẽ hình elip
Để vẽ một hình elip, hàm cv2.ellipse () được sử dụng. Hàm này chấp nhận tám tham số đầu vào.
- Đối tượng hình ảnh mà hình ảnh sẽ được vẽ
- Tọa độ trung tâm (x, y)
- Chiều dài của trục chính và trục chính (h, w)
- Góc quay của hình elip (được tính theo chiều ngược chiều kim đồng hồ)
- Góc bắt đầu (tính theo chiều kim đồng hồ)
- Góc cuối cùng (tính theo chiều kim đồng hồ)
- Màu nét trong BGR (không phải RGB cần được lưu ý)
- Độ dày nét vẽ
Mã mẫu
nhập numpy dưới dạng npimport cv2my_img =np.zeros ((400, 400, 3), dtype ="uint8") # tạo cho hình chữ nhậtcv2.ellipse (my_img, (256,256), (100,50), 0,0,180,255, -1) cv2.imshow ('Window', my_img) # cho phép chúng tôi xem hình ảnh # cho đến khi đóng một cách cưỡng bứccv2.waitKey (0) cv2.destroyAllWindows ()
Đầu ra
Để vẽ một đa giác
Để vẽ một đa giác, hàm cv2.polylines () được sử dụng. Hàm này cần năm số đối số.
- Đối tượng hình ảnh để vẽ
- Mảng tọa độ
- Đúng, nếu nó là một dòng kín
- Màu nét
- Độ dày nét vẽ
Mã mẫu
import numpy dưới dạng npimport cv2my_img =np.zeros ((400, 400, 3), dtype ="uint8") pts =np.array ([[10,5], [20,30], [70,20 " ], [50,10]], np.int32) pts =pts.reshape ((- 1,1,2)) cv2.polylines (my_img, [pts], True, (0,255,255)) cv2.imshow ('Cửa sổ ', my_img) cv2.waitKey (0) cv2.destroyAllWindows ()
Đầu ra
Để vẽ văn bản
Để viết văn bản bằng OpenCV, có hàm cv2.putText () chấp nhận một số đối số.
- Hình ảnh để vẽ
- Văn bản được viết
- Tọa độ của điểm bắt đầu văn bản
- Phông chữ được sử dụng
- Kích thước phông chữ
- Màu văn bản
- Độ dày của văn bản
- Loại đường được sử dụng
Mã mẫu
import numpy dưới dạng npimport cv2my_img =np.zeros ((400, 400, 3), dtype ="uint8") # Viết textfont =cv2.FONT_HERSHEY_SIMPLEXcv2.putText (my_img, 'Tutorials Point', (50, 50), font, 0.8, (255, 0, 0), 2, cv2.LINE_AA) cv2.imshow ('Window', my_img) cv2.waitKey (0) cv2.destroyAllWindows ()