Python 中 OpenCV (cv2) 安裝與使用詳細指南
OpenCV (Open Source Computer Vision Library) 是計算機視覺領域最流行的庫之一。Python 通過 cv2
模塊提供 OpenCV 的接口。
一、安裝 OpenCV
方法 1:基礎安裝(推薦)
# 安裝核心包(包含主要功能)
pip install opencv-python# 安裝完整包(包含額外模塊如 SIFT/SURF)
pip install opencv-contrib-python
方法 2:通過 Conda
conda install -c conda-forge opencv
驗證安裝
import cv2
print(cv2.__version__) # 輸出版本號,如 4.9.0
二、基本功能使用
1. 讀取/顯示/保存圖像
import cv2# 讀取圖像 (參數:0=灰度,1=彩色)
img = cv2.imread('image.jpg', cv2.IMREAD_COLOR)# 顯示圖像
cv2.imshow('Image Window', img)
cv2.waitKey(0) # 等待按鍵(0=無限等待)
cv2.destroyAllWindows()# 保存圖像
cv2.imwrite('output.jpg', img)
2. 視頻處理
# 打開攝像頭
cap = cv2.VideoCapture(0) # 0=默認攝像頭while True:ret, frame = cap.read() # 讀取幀if not ret: break# 轉換為灰度gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)cv2.imshow('Live Video', gray)# 按 'q' 退出if cv2.waitKey(1) & 0xFF == ord('q'):breakcap.release()
cv2.destroyAllWindows()
3. 圖像處理操作
# 縮放
resized = cv2.resize(img, (400, 300))# 旋轉
(h, w) = img.shape[:2]
M = cv2.getRotationMatrix2D((w//2, h//2), 45, 1.0) # 旋轉45度
rotated = cv2.warpAffine(img, M, (w, h))# 邊緣檢測
edges = cv2.Canny(img, 100, 200) # 閾值1, 閾值2# 繪制圖形
cv2.rectangle(img, (50, 50), (200, 200), (0,255,0), 2) # 綠色矩形
cv2.putText(img, 'Hello', (100,100), cv2.FONT_HERSHEY_SIMPLEX, 1, (255,0,0), 2)
三、高級功能示例
1. 人臉檢測
# 加載預訓練模型
face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml')gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
faces = face_cascade.detectMultiScale(gray, 1.1, 4)# 標記檢測到的人臉
for (x,y,w,h) in faces:cv2.rectangle(img, (x,y), (x+w,y+h), (255,0,0), 2)
2. 特征點檢測 (SIFT)
sift = cv2.SIFT_create()
keypoints, descriptors = sift.detectAndCompute(gray, None)# 繪制特征點
img_sift = cv2.drawKeypoints(img, keypoints, None)
3. 目標跟蹤 (KCF 算法)
tracker = cv2.TrackerKCF_create()
bbox = cv2.selectROI('Tracking', img, False) # 手動選擇區域
tracker.init(img, bbox)while True:ret, frame = cap.read()success, bbox = tracker.update(frame)if success:x,y,w,h = [int(i) for i in bbox]cv2.rectangle(frame, (x,y), (x+w,y+h), (0,255,0), 2)
四、常見問題解決
-
導入錯誤
ImportError: libGL.so.1
在 Linux 上安裝依賴:sudo apt install libgl1-mesa-glx
-
視頻無法打開
檢查攝像頭權限或視頻路徑,嘗試:cap = cv2.VideoCapture(0, cv2.CAP_DSHOW) # Windows 專用
-
Matplotlib 顯示顏色異常
OpenCV 使用 BGR 格式,需轉換:img_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) plt.imshow(img_rgb)
五、學習資源
- 官方文檔
- OpenCV-Python 教程
- 推薦書籍:《Learning OpenCV 4 Computer Vision with Python 3》