Rate this post

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

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Contact Me on Zalo
Call now