OpenCV là một thư viện Computer Vision phổ biến, hầu hết được sử dụng cho các ứng dụng thời gian thực. Trong blog này, chúng tôi điểm qua 9 hàm OpenCV được sử dụng thường xuyên nhất để sử dụng thư viện một cách hiệu quả cùng với các ví dụ về code.
Các bài viêt liên quan:
Color to GrayScale
Color to GrayScale – Chúng tôi chuyển đổi hình ảnh BGR sang hình ảnh thang độ xám để chúng tôi có thể quan sát cường độ của các điểm ảnh trong hình ảnh chứ không phải các cấu hình màu trong hình ảnh.
import cv2 as cv img = cv.imread('PATH OF THE IMAGE IN YOUR LOCAL SYSTEM') cv.imshow("Color",img) gray = cv.cvtColor(img,cv.COLOR_BGR2GRAY) cv.imshow("Gray",gray) cv.waitKey(0)
Blurring an image using GuassianBlur
Làm mờ hình ảnh bằng GuassianBlur. Chúng tôi làm mờ hình ảnh để giảm nhiễu trong hình ảnh do ánh sáng không tốt và một số vấn đề với cảm biến trong máy ảnh khi chụp ảnh. Trong đoạn mã, để tăng phạm vi làm mờ, chúng ta có thể tăng kích thước hạt nhân từ (3,3) lên (7,7).
import cv2 as cv img = cv.imread('Path to the image in your local system') cv.imshow("Color",img) blur = cv.GaussianBlur(img,(7,7),cv.BORDER_DEFAULT) cv.imshow("Blurred",blur) cv.waitKey(0)
Xem thêm Edge Server là gì
Edge Cascade
Edge Cascade để phát hiện các cạnh trong hình ảnh để học mô hình tốt hơn.Chúng ta đang sử dụng công cụ dò Canny Edge rất phổ biến.
import cv2 as cv img =cv.imread('Path to the image in your local system') cv.imshow("Color",img) canny = cv.Canny(img,125,175) cv.imshow("Edge Cascaded image",canny) cv.waitKey(0)
Dilation of the cascaded image
Dilation của hình ảnh xếp tầng. Điều này làm dày các cạnh từ hình ảnh xếp tầng để nâng cao khả năng phát hiện cạnh và các tính năng phát hiện tốt hơn.
import cv2 as cv img = cv.imread('Path to the image in your local system') cv.imshow("Color",img) canny = cv.Canny(img,125,175) #dilating the images: dilated = cv.dilate(canny,(7,7),iterations=3) cv.imshow("dilated images",dilated) cv.waitKey(0)
Xem thêm Sử dụng Python Computer Vision với OpenCV
Resize and cropping the image
Thay đổi kích thước và cắt hình ảnh cho cùng kích thước đối với hình ảnh có kích thước khác nhau.
import cv2 as cv img = cv.imread('Path to the image in your local system') cv.imshow("Color",img) #resizing the images: resize = cv.resize(img,(500,500),interpolation=cv.INTER_CUBIC) crop = img[50:200,200:400] cv.imshow("cropped image",crop) cv.imshow("Resized images",resize)cv.waitKey(0)
Determining contours in an image
Xác định các đường bao trong một hình ảnh. Đường viền không là gì khác ngoài một đường cong hoặc đường nối tất cả các điểm liên tục trong hình ảnh (dọc theo đường viền) có cùng màu sắc hoặc cường độ. Nó được sử dụng trong phát hiện đối tượng chủ yếu để phân tích hình dạng.
import cv2 as cv img = cv.imread('Path to the image in your local system') cv.imshow("Color",img) #reduces the contours when blurring the image blur = cv.GaussianBlur(img,(7,7),cv.BORDER_DEFAULT) canny = cv.Canny(blur,125,175) #returns all the contours in the forma of list(RETR_LIST). #chain_approx_simple compresses the contorurs and returns only the two end points. contours,hierarchies = cv.findContours(canny,cv.RETR_LIST,cv.CHAIN_APPROX_SIMPLE) print("NO of contours : ",len(contours)) #threshold = binarizing the image.It is another method to find contours ret,thresh = cv.threshold(img,125,125,cv.THRESH_BINARY) cv.imshow("Thresh",thresh) cv.waitKey(0)
Xem thêm Các kỹ thuật Computer Vision trong OpenCV
Splitting an image into its respective RED, GREEN, and BLUE parts
Ghép hình ảnh vào các phần ĐỎ, XANH LÁ và XANH LÁ tương ứng của nó. Ở đây, nó được mô tả như một hình ảnh GreyScale và do đó chúng ta có thể quan sát nồng độ điểm ảnh cho các màu tương ứng.
import cv2 as cv import numpy as np img = cv.imread('Path to the image in your local system') cv.imshow("Color",img) b,g,r = cv.split(img) cv.imshow("Blue",b) cv.imshow("Green",g) cv.imshow("Red",r)
BITWISE operators in OpenCV
Toán tử BITWISE trong OpenCV Chúng ta sẽ hiểu trực quan từng thao tác bitwise bằng cách sử dụng hình chữ nhật và hình tròn làm ví dụ.
import cv2 as cv import numpy as np blank = np.zeros((400,400),dtype = 'uint8') rectangle = cv.rectangle(blank.copy(),(30,30),(370,370),255,-1) circle = cv.circle(blank.copy(),(200,200),200,255,-1) cv.imshow('circle',circle) cv.imshow('rectange',rectangle) #bitwise AND bitwise_and = cv.bitwise_and(rectangle,circle) cv.imshow("Bitwise_AND",bitwise_and) #bitwise_OR bitwise_or = cv.bitwise_or(rectangle,circle) cv.imshow('Bitwise_OR',bitwise_or) #bitwise XOR bitwise_xor = cv.bitwise_xor(rectangle,circle) cv.imshow('Bitwise_XOR',bitwise_xor) #bitwise_NOT bitwise_not = cv.bitwise_not(rectangle,circle) cv.imshow('Bitwise_NOT',bitwise_not)
Xem thêm Brand Compass (Purpose, Mission, Vision, Values) là gì ?
Plotting a histogram of an image
Vẽ biểu đồ của một hình ảnh.
Điều này cho bạn trực giác về sự phân bố pixel trong hình ảnh.
import cv2 as cv import matplotlib.pyplot as plt img = cv.imread('Path to the image in your local system') cv.imshow("Color",img) gray = cv.cvtColor(img,cv.COLOR_BGR2GRAY) gray_hist = cv.calcHist([gray],[0],None,[256],[0,256]) plt.figure() plt.title('grayscale Histogram') plt.xlabel('Bins') plt.ylabel('No.of pixels') plt.plot(gray_hist) plt.xlim([0,256]) plt.show()
Đó là tất cả cho bây giờ. Xin vui lòng vỗ tay nếu bạn đã học được điều gì đó từ đây. Ngoài ra, vui lòng cung cấp ý kiến trong trường hợp nghi ngờ, thắc mắc hoặc phản hồi.
Hướng dẫn sử dụng các function của OpenCV trong Python
Để sử dụng các function của OpenCV trong Python, trước tiên bạn cần cài đặt OpenCV bằng cách sử dụng lệnh sau:
pip install opencv-python
Sau khi cài đặt xong, bạn có thể sử dụng OpenCV trong Python bằng cách import thư viện vào chương trình như sau:
import cv2
Sau đó, bạn có thể sử dụng các function của OpenCV. Dưới đây là một số ví dụ về cách sử dụng các function cơ bản của OpenCV:
Đọc và hiển thị ảnh
import cv2 # Load ảnh từ file img = cv2.imread('image.jpg') # Hiển thị ảnh cv2.imshow('image', img) cv2.waitKey(0) cv2.destroyAllWindows()
Chuyển đổi ảnh sang ảnh xám
import cv2 # Load ảnh từ file img = cv2.imread('image.jpg') # Chuyển đổi ảnh sang ảnh xám gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # Hiển thị ảnh xám cv2.imshow('gray image', gray_img) cv2.waitKey(0) cv2.destroyAllWindows()
Phát hiện cạnh bằng Sobel Edge Detection
import cv2 # Load ảnh từ file img = cv2.imread('image.jpg') # Chuyển đổi ảnh sang ảnh xám gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # Phát hiện cạnh bằng Sobel Edge Detection sobelx = cv2.Sobel(gray_img, cv2.CV_64F, 1, 0, ksize=5) sobely = cv2.Sobel(gray_img, cv2.CV_64F, 0, 1, ksize=5) sobel = cv2.addWeighted(sobelx, 0.5, sobely, 0.5, 0) # Hiển thị ảnh với cạnh được phát hiện bằng Sobel cv2.imshow('sobel edge', sobel) cv2.waitKey(0) cv2.destroyAllWindows()https://websitehcm.com/and-operator-trong-mongodb/
Phát hiện khuôn mặt bằng Haar Cascade Classifier
import cv2 # Load ảnh từ file img = cv2.imread('image.jpg') # Tải classifier face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml') # Phát hiện khuôn mặt bằng Haar Cascade Classifier faces = face_cascade.detectMultiScale(img, scaleFactor=1.1, minNeighbors=5) # Vẽ hình chữ nhật xung quanh khuôn mặt for (x, y, w, h) in faces: cv2.rectangle(img, (x, y), (x+w, y+h), (0, 255, 0), 2) # Hiển thị ảnh với khuôn mặt được phát hiện cv2.imshow('face detection', img) cv2.waitKey(0) cv2.destroyAllWindows()
Xem thêm $and Operator trong mongoDB