一、OpenCV初步認識
OpenCV是一款開源的計算機視覺庫,可以幫助開發者快速實現圖像處理、計算機視覺等任務。它是用C++編寫的,同時也可使用Python調用。OpenCV對於圖像處理是一個寶貴的工具,可以做到基本的處理,如:顏色空間轉換、邊緣檢測等,也支持更高級別的計算機視覺算法,如:人臉識別、目標跟蹤等。Python cv2庫是OpenCV C++版本的Python包裝器,它是應用最廣泛的開源計算機視覺庫。
二、圖像處理與分析
1、讀取圖像
import cv2
# 讀取圖像文件
img = cv2.imread('path_to_image')
# 顯示圖像
cv2.imshow('Image', img)
# 等待用戶按下任意鍵
cv2.waitKey(0)
# 關閉所有窗口
cv2.destroyAllWindows()
2、調整圖像大小
# 讀取圖像並獲取其大小
img = cv2.imread('path_to_image')
h, w = img.shape[:2]
# 將圖像大小調整為原來的2倍
resized_img = cv2.resize(img, (2*w, 2*h), interpolation=cv2.INTER_CUBIC)
# 顯示調整大小後的圖像
cv2.imshow('Resized Image', resized_img)
# 等待用戶按下任意鍵
cv2.waitKey(0)
# 關閉所有窗口
cv2.destroyAllWindows()
3、圖像旋轉
# 讀取圖像並獲取其大小
img = cv2.imread('path_to_image')
h, w = img.shape[:2]
# 定義旋轉角度
angle = 45
# 計算旋轉矩陣
M = cv2.getRotationMatrix2D((w/2, h/2), angle, 1)
# 應用旋轉矩陣
rotated_img = cv2.warpAffine(img, M, (w, h))
# 顯示旋轉後的圖像
cv2.imshow('Rotated Image', rotated_img)
# 等待用戶按下任意鍵
cv2.waitKey(0)
# 關閉所有窗口
cv2.destroyAllWindows()
三、計算機視覺應用
1、人臉檢測
import cv2
# 加載人臉檢測分類器
face_cascade = cv2.CascadeClassifier('path_to_classifier')
# 讀取圖像並將其轉換為灰度圖像
img = cv2.imread('path_to_image')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 檢測圖像中的人臉
faces = face_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5, minSize=(30, 30))
# 在圖像中框出人臉
for (x, y, w, h) in faces:
cv2.rectangle(img, (x, y), (x+w, y+h), (0, 255, 0), 2)
# 顯示檢測結果
cv2.imshow('Face Detection', img)
# 等待用戶按下任意鍵
cv2.waitKey(0)
# 關閉所有窗口
cv2.destroyAllWindows()
2、目標跟蹤
import cv2
# 從視頻中獲取第一幀作為跟蹤目標
cap = cv2.VideoCapture('path_to_video')
ret, frame = cap.read()
# 選擇跟蹤目標
bbox = cv2.selectROI(frame, False)
# 創建跟蹤器對象
tracker = cv2.TrackerKCF_create()
# 初始化跟蹤器
tracker.init(frame, bbox)
# 循環讀取視頻幀並進行跟蹤
while True:
ret, frame = cap.read()
if not ret:
break
# 更新跟蹤器
ok, bbox = tracker.update(frame)
# 如果跟蹤器成功跟蹤目標,則繪製跟蹤框
if ok:
cv2.rectangle(frame, (int(bbox[0]), int(bbox[1])), (int(bbox[0]+bbox[2]), int(bbox[1]+bbox[3])), (0, 255, 0), 2)
# 顯示跟蹤結果
cv2.imshow('Tracking Result', frame)
# 按下“q”鍵退出循環
k = cv2.waitKey(1) & 0xff
if k == ord('q'):
break
# 釋放視頻流並關閉所有窗口
cap.release()
cv2.destroyAllWindows()
四、總結
本文介紹了Python CV的基本概念,及其在圖像處理和計算機視覺應用中的具體實現方式。通過學會OpenCV的使用和掌握具體應用,可以更好地進行計算機視覺的處理和分析。希望讀者可以從中獲得收穫,更好地應用Python CV。
原創文章,作者:DIKDJ,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/368577.html