OpenCV là một thư viện nhận dạng hình ảnh mã nguồn mở
Nó được sử dụng cho máy học, thị giác máy tính và xử lý hình ảnh. Bạn có thể khai thác tối đa OpenCV khi được tích hợp với các thư viện mạnh mẽ như Numpy và Pandas
CÀI ĐẶT PYTHON 3. X
Mở Terminal/Command Prompt và gõ~ pip install opencv-python
BẮT ĐẦU [CÁCH ĐỌC HÌNH ẢNH]
1. Mở PyCharm
2. Nhập cv2
3. Dán một hình ảnh thử nghiệm trong thư mục
4. Tạo biến lưu ảnh sử dụng hàm imread[]
5. Hiển thị ảnh bằng hàm imshow[]
6. Thêm độ trễ bằng hàm waitkey[]
1 2 3 4 5 6
import cv2 # LOAD AN IMAGE USING 'IMREAD' img = cv2.imread["Resources/lena.png"] # DISPLAY cv2.imshow["Lena Soderberg”, img] cv2.waitKey[0]
PHÁT VIDEO BẰNG CHỨC NĂNG VideoCapture[]
Mở PyCharm
Nhập cv2
Dán video thử nghiệm vào thư mục
Tạo biến lưu trữ video bằng hàm VideoCapture[]
Tạo vòng lặp vô hạn để hiển thị liên tục từng khung hình của video
Hiển thị video bằng hàm imshow[]
Thêm độ trễ bằng hàm waitkey[]
1 2 3 4 5 6 7 8 9
import cv2 frameWidth = 640 frameHeight = 480 cap = cv2.VideoCapture["Resources/test_ video.mp4"] while True: success, img = cap.read[] img = cv2.resize[img, [frameWidth, frameHeight]] cv2.imshow["Result", img] break
TRUY CẬP NỀN TẢNG TRỰC TIẾP TỪ WEBCAM
Mở PyCharm
Nhập cv2
Tạo biến lưu trữ video bằng hàm VideoCapture[]
Truyền tham số 0 trong VideoCapture[0] để truy cập webcam
Tạo vòng lặp vô hạn để hiển thị liên tục từng khung hình của video trên webcam
Hiển thị nguồn cấp dữ liệu trực tiếp bằng hàm imshow[]
Thêm độ trễ vô cực bằng cách sử dụng waitKey[0]
1 2 3 4 5 6 7 8 9 10 11
import cv2 Width = 640 Height = 480 cap = cv2.VideoCapture[0] cap.set[3, frameWidth] cap.set[4, frameHeight] cap.set[10, 150] while True: success, img = cap.read[] cv2.imshow["Result", img] break
CÁC CHỨC NĂNG CỦA OPENCV
Chuyển đổi hình ảnh sang thang độ xám
Mở PyCharm
Nhập cv2
Tạo biến lưu ảnh sử dụng hàm
imread[]
Để chuyển đổi sang thang độ xám, hãy sử dụng hàm
11 2 3 4 5 6 7 8 9
import cv2 frameWidth = 640 frameHeight = 480 cap = cv2.VideoCapture["Resources/test_ video.mp4"] while True: success, img = cap.read[] img = cv2.resize[img, [frameWidth, frameHeight]] cv2.imshow["Result", img] break
Truyền vị trí hình ảnh tham số và
2 để chuyển đổi1 2 3 4 5 6 7 8 9
import cv2 frameWidth = 640 frameHeight = 480 cap = cv2.VideoCapture["Resources/test_ video.mp4"] while True: success, img = cap.read[] img = cv2.resize[img, [frameWidth, frameHeight]] cv2.imshow["Result", img] break
1 2 3 4 5
import cv2 img = cv2.imread["Resources/lena.png"] imgGray = cv2.cvtColor[img, cv2.COLOR_BGR2GRAY] cv2.imshow["Gray Image", imgGray] cv2.waitKey[0]
Phát hiện cạnh
Mở PyCharm
Nhập cv2
Tạo biến lưu ảnh sử dụng hàm
imread[]
Để phát hiện cạnh, hãy sử dụng hàm
41 2 3 4 5 6 7 8 9
import cv2 frameWidth = 640 frameHeight = 480 cap = cv2.VideoCapture["Resources/test_ video.mp4"] while True: success, img = cap.read[] img = cv2.resize[img, [frameWidth, frameHeight]] cv2.imshow["Result", img] break
Truyền vị trí hình ảnh tham số và ngưỡng để chuyển đổi
1 2 3 4 5 6
import cv2 img = cv2.imread["Resources/lena.png"] imgCanny = cv2.Canny[img, 150, 200] cv2.imshow["Canny Image”, imgCanny] cv2.waitKey[0]
CẮT HÌNH ẢNH
Nhập numpy và cv2
Tạo hai biến để lưu trữ chiều cao và chiều rộng của hình ảnh
Tạo hai mảng numpy để lưu trữ tọa độ
Mảng đầu tiên - lưu trữ tọa độ của hình ảnh sẽ được cắt
Mảng thứ hai - lưu trữ tọa độ của hình ảnh hoàn chỉnh
Cắt hình ảnh bằng hàm getPerspective[] và wrapPerspective[]
PHÁT HIỆN KHUÔN MẶT
Mở PyCharm
Nhập cv2
3. Tạo một biến để lưu bộ phân loại theo tầng [để tìm hiểu thêm về bộ phân loại theo tầng, hãy nhấp vào đâyChuyển đổi hình ảnh sang thang độ xám bằng hàm
11 2 3 4 5 6 7 8 9
import cv2 frameWidth = 640 frameHeight = 480 cap = cv2.VideoCapture["Resources/test_ video.mp4"] while True: success, img = cap.read[] img = cv2.resize[img, [frameWidth, frameHeight]] cv2.imshow["Result", img] break
Phát hiện khuôn mặt sử dụng chức năng
61 2 3 4 5 6 7 8 9
import cv2 frameWidth = 640 frameHeight = 480 cap = cv2.VideoCapture["Resources/test_ video.mp4"] while True: success, img = cap.read[] img = cv2.resize[img, [frameWidth, frameHeight]] cv2.imshow["Result", img] break
Vẽ một hình chữ nhật xung quanh khuôn mặt được phát hiện
1 2 3 4 5 6 7 8 9 10 11 12 13 14
import cv2 face_Cascade = cv2.CascadeClassifier["Resources/haarcascade_frontalface_default.xml"] image = cv2.imread['Resources/lena.png'] imgGray = cv2.cvtColor[image, cv2.COLOR_BGR2GRAY] faces = face_Cascade.detectMultiScale[imgGray, 1.1, 4] for [x, y, w, h] in faces: cv2.rectangle[image, [x, y], [x + w, y + h], [255, 0, 0], 2] cv2.imshow["Result", image] cv2.waitKey[0]