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)
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)
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)
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)
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.