大家好,我是微學AI,今天給大家介紹一下人工智能算法工程師(中級)課程1-Opencv視覺處理之基本操作與代碼詳解。OpenCV(Open Source Computer Vision Library)是一個開源的計算機視覺和機器學習軟件庫。它提供了各種視覺處理函數,并支持多種編程語言,如C++、Python、Java等。OpenCV具有跨平臺性,可以在不同的操作系統上運行。它廣泛應用于圖像處理、視頻分析、物體識別、人臉識別、動作識別等領域。
文章目錄
- 一、Opencv的基本操作
- 1. 圖像讀取和保存
- 2. 視頻讀取和保存
- 3. 圖像通道操作
- 4. 圖像色彩空間
- 5. 圖像閾值操作
- 6. 圖像掩碼操作
- 7. 圖像混合操作
- 8. 圖像插值算法
一、Opencv的基本操作
1. 圖像讀取和保存
讀取圖像使用cv2.imread()
,保存圖像使用cv2.imwrite()
。
我們準備一張圖片,例如這張:
將其命名為image.jpg
,然后運行以下代碼:
import cv2
# 讀取圖像
image = cv2.imread('image.jpg')
# 保存圖像
cv2.imwrite('new_image.jpg', image)
2. 視頻讀取和保存
讀取視頻使用cv2.VideoCapture()
,保存視頻使用cv2.VideoWriter()
。
import cv2
# 讀取視頻
cap = cv2.VideoCapture('video.mp4')
# 定義視頻保存的格式
fourcc = cv2.VideoWriter_fourcc(*'XVID')
out = cv2.VideoWriter('output.avi', fourcc, 20.0, (640, 480))
while cap.isOpened():ret, frame = cap.read()if ret:# 寫入視頻幀out.write(frame)# 顯示視頻幀cv2.imshow('frame', frame)if cv2.waitKey(1) & 0xFF == ord('q'):breakelse:break
# 釋放所有資源
cap.release()
out.release()
cv2.destroyAllWindows()
3. 圖像通道操作
在OpenCV中,BGR圖像的三個通道可以分別訪問和操作。
import cv2
import numpy as np
image = cv2.imread('image.jpg')
# 分離通道
b, g, r = cv2.split(image)
# 合并通道
merged = cv2.merge([b, g, r])
# 顯示藍色通道
cv2.imshow('Blue channel', b)
cv2.waitKey(0)
cv2.destroyAllWindows()
4. 圖像色彩空間
OpenCV支持多種色彩空間轉換,常用的有BGR到灰度圖、BGR到HSV等。
import cv2
image = cv2.imread('image.jpg')
# 轉換為灰度圖像
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# 轉換為HSV色彩空間
hsv_image = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
5. 圖像閾值操作
閾值操作可以將圖像轉換為二值圖像。
import cv2
import numpy as np
image = cv2.imread('image.jpg', 0)
# 應用固定閾值操作
_, thresh1 = cv2.threshold(image, 127, 255, cv2.THRESH_BINARY)
cv2.imshow('Binary image', thresh1)
cv2.waitKey(0)
cv2.destroyAllWindows()
6. 圖像掩碼操作
掩碼操作允許您選擇圖像的特定區域進行操作。
import cv2
import numpy as np
image = cv2.imread('image.jpg')
# 創建掩碼
mask = np.zeros(image.shape[:2], np.uint8)
mask[100:300, 100:400] = 255
# 應用掩碼
masked_image = cv2.bitwise_and(image, image, mask=mask)
cv2.imshow('Masked image', masked_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
7. 圖像混合操作
圖像混合是將兩幅圖像按照一定的比例合并。
import cv2
import numpy as np
image1 = cv2.imread('image1.jpg')
image2 = cv2.imread('image2.jpg')
# 圖像混合
blended = cv2.addWeighted(image1, 0.7, image2, 0.3, 0)
cv2.imshow('Blended image', blended)
cv2.waitKey(0)
cv2.destroyAllWindows()
8. 圖像插值算法
插值算法在圖像縮放時使用,常見的有最近鄰插值、雙線性插值、雙三次插值等。
import cv2
image = cv2.imread('image.jpg')
# 圖像縮放,使用雙線性插值
resized_image = cv2.resize(image, None, fx=0.5, fy=0.5, interpolation=cv2.INTER_LINEAR)
cv2.imshow('Resized image', resized_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
以上代碼示例展示了如何使用OpenCV進行基本的圖像和視頻處理任務。這些操作是計算機視覺應用的基礎,可以用于更復雜的應用,如物體檢測、人臉識別等。
大家請注意:我們要確保替換image.jpg
、video.mp4
和image1.jpg
、image2.jpg
為大家的實際文件名。同時,確保安裝.