0

OpenCV With Python Part 4

Vẽ hình, các ký tự hay viết chử lên bức ảnh đó là những thao tác mà ở bài trước tôi đả hướng dẩn. Trong bài viết này, tôi sẽ giới thiệu một số điều cơ bản về các thao tác hình ảnh đơn giản mà chúng ta có thể thực hiện.

I. Giới thiệu.

Mỗi hình ảnh chia nhỏ thành các khung. Mỗi khung, giống như một hình ảnh nhỏ, sau đó chia thành các điểm ảnh được lưu trữ trong các hàng và cột trong khung hình / hình ảnh. Mỗi pixel có một vị trí tọa độ, và mỗi điểm ảnh bao gồm các giá trị màu. Chúng ta hãy nghiên cứu một số ví dụ về việc tiếp cận các điểm khác nhau của các nguyên tắc này.

II. Các thao tác về hình ảnh.

1. Hướng dẫn.

Chúng ta bắt đầu bằng cách đọc hình ảnh như thường lệ. Bạn có thể sử dụng hình ảnh của bạn .

import cv2
import numpy as np

img = cv2.imread('watch.jpg',cv2.IMREAD_COLOR)

Bây giờ, chúng ta có thể tham khảo các điểm ảnh cụ thể, như sau: Lấy điểm ảnh với tọa độ 55x55

px = img[55,55]

Tiếp theo, chúng ta thực sự có thể thay đổi một điểm ảnh: Thay đổi bằng cách gán cho nó với một điểm màu có mã RGB [255,255,255] Lúc này ta sẽ thấy có một điểm chấm nhỏ trên bức ảnh. Vì đây đang thục hiện với các điểm ảnh nên mình không đưa ra ví dụ minh họa , nó có kích thước quá nhỏ.

img[55,55] = [255,255,255]

Sau đó in điểm ảnh tham khảo:

px = img[55,55]
print(px)

Bây giờ nên khác. Tiếp theo, chúng ta có thể tham chiếu ROI ( Region of Image), như sau: Nghĩa là lấy vùng quan tâm có tọa độ

px = img[200:500,200:500]
print(px)

Chúng tôi cũng có thể sửa đổi ROI, như sau: Tô màu cho vùng quan tâm nhé.

img[100:150,100:150] = [255,255,255]

Chúng ta có thể tham khảo một số đặc điểm của hình ảnh:

Thuộc tính hình ảnh bao gồm số hàng, cột và kênh, loại dữ liệu hình ảnh, số pixel vv Hình dạng hình ảnh được truy cập bằng img.shape. Nó trả về một tuple của số hàng, cột và các kênh (nếu hình ảnh là màu): Nếu hình ảnh màu xám, thì tuple trả lại chỉ chứa số hàng và cột. Vì vậy, nó là một phương pháp tốt để kiểm tra nếu tải hình ảnh là màu xám hoặc màu sắc hình ảnh.

print(img.shape)

Tổng số pixel được truy cập

print(img.size)

Loại dữ liệu hình ảnh thu được bằng

print(img.dtype)

Và chúng tôi có thể thực hiện các hoạt động, như: Đôi khi, bạn sẽ phải chơi với một vùng hình ảnh nhất định. Đối với việc dò tìm mắt trong hình ảnh, việc dò tìm khuôn mặt đầu tiên được thực hiện trên toàn bộ hình ảnh và khi có mặt, chúng ta sẽ chọn vùng mặt và tìm kiếm mắt bên trong thay vì tìm kiếm toàn bộ hình ảnh. Nó cải thiện độ chính xác (vì mắt luôn ở trên khuôn mặt) và hiệu suất (vì chúng ta tìm kiếm một khu vực nhỏ) ROI lại thu được bằng cách sử dụng lập chỉ mục Numpy. Ở đây tôi chọn mặt đồng hồ và sao chép nó vào một khu vực khác trong hình ảnh:

watch_face = img[100:200,200:300]
img[0:100,0:100] = watch_face

cv2.imshow('image',img)
cv2.waitKey(0)
cv2.destroyAllWindows()

2. Kết quả.

Điều này sẽ làm việc với hình ảnh của tôi, nhưng có thể không cho hình ảnh của bạn, tùy thuộc vào kích thước. Đầu ra trong trường hợp của tôi:

Đây là một số hoạt động đơn giản. Trong hướng dẫn tiếp theo, chúng tôi sẽ giới thiệu một số thao tác hình ảnh nâng cao hơn mà chúng tôi có thể thực hiện.

III. Tài liệu tham khảo.

http://docs.opencv.org/ https://techmaster.vn/ https://pythonprogramming.net/


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí