目錄
學習目標:
一、核心知識點
二、實用工具推薦
三、學習內容與步驟
1.環境搭建
2.圖像獲取與顯示
3 圖像基礎處理
4 圖像幾何變換
5 圖像像素操作
四、實戰任務建議
實戰 1:圖像加載 + 顯示 + 保存
實戰 2:灰度圖 + 邊緣檢測 + 圖像疊加
實戰 3:人臉檢測(OpenCV自帶Haar模型)
實戰 4:攝像頭實時圖像 + 邊緣檢測
五、推薦學習資源
教程/文檔:
視頻教程:
六、階段一小項目
?
計算機視覺階段一:CV入門基礎,這是構建圖像理解能力的第一步。
學習目標:
掌握圖像的基本概念,熟練使用 OpenCV 進行圖像讀取、處理和簡單分析。
一、核心知識點
模塊 | 內容 | 備注 |
圖像基礎概念 | 像素、RGB、灰度圖、通道、分辨率 | 圖像是一個多維數組 |
顏色空間轉換 | RGB ? BGR ? HSV | cv2.cvtColor() |
圖像讀取與顯示 | cv2.imread()、cv2.imshow() | 加載圖像/視頻 |
圖像縮放與裁剪 | resize()、數組切片 | 改變圖像尺寸/區域 |
圖像濾波與去噪 | 均值、Gaussian、Median | 降噪處理 |
邊緣檢測 | Sobel、Laplacian、Canny | 識別圖像中邊緣輪廓 |
圖像幾何變換 | 平移、旋轉、仿射變換、透視變換 | cv2.warpAffine() |
繪圖與標注 | 畫線、圓、文字標注 | cv2.line()、cv2.putText() |
二、實用工具推薦
工具名 | 用途 | 安裝命令 |
Python | 編程語言 | 建議用Python 3.8+ |
OpenCV | 圖像處理主力庫 | pip install opencv-python |
JupyterLab | 交互式開發環境(推薦) | pip install jupyterlab |
三、學習內容與步驟
1.環境搭建
-
編程語言選擇:
-
Python:主流語言,語法簡單,生態豐富(推薦初學者使用)。
-
C++:工業級應用常用,性能更高(適合進階后學習)。
-
-
安裝OpenCV:
pip install opencv-python # 完整版(含額外模塊,如SIFT算法): pip install opencv-contrib-python
-
Python安裝命令:
-
C++版本需從源碼編譯(參考OpenCV官方文檔)。
-
-
開發工具:
-
Jupyter Notebook:適合快速實驗和調試。
-
PyCharm/VS Code:適合大型項目開發。
-
2.圖像獲取與顯示
-
圖像讀取與保存:
import cv2
# 讀取圖像
img = cv2.imread('image.jpg') # BGR格式
# 顯示圖像
cv2.imshow('Image', img)
cv2.waitKey(0) # 等待按鍵關閉窗口
cv2.destroyAllWindows()
# 保存圖像
cv2.imwrite('output.jpg', img)
-
圖像格式與通道:
-
OpenCV默認讀取為BGR格式,需轉換為RGB(如用于顯示)。
-
像素值范圍:0-255(8位無符號整數)。
-
3 圖像基礎處理
-
顏色空間轉換:
# 灰度化
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# RGB轉灰度公式:Y = 0.299R + 0.587G + 0.114B
-
圖像二值化:
# 閾值分割(將灰度圖轉為黑白二值圖)
_, binary_img = cv2.threshold(gray_img, 127, 255, cv2.THRESH_BINARY)
-
直方圖均衡化:
# 增強圖像對比度
equalized_img = cv2.equalizeHist(gray_img)
-
濾波去噪:
# 高斯濾波(平滑噪聲)
blurred_img = cv2.GaussianBlur(img, (5,5), 0)
# 中值濾波(去除椒鹽噪聲)
median_img = cv2.medianBlur(img, 5)
4 圖像幾何變換
-
縮放:
resized_img = cv2.resize(img, (width, height), interpolation=cv2.INTER_LINEAR)
-
旋轉:
# 獲取旋轉矩陣(繞中心點旋轉45度,縮放0.5)
M = cv2.getRotationMatrix2D((center_x, center_y), 45, 0.5)
rotated_img = cv2.warpAffine(img, M, (width, height))
-
透視變換:
# 定義源點和目標點
pts1 = np.float32([[x1,y1], [x2,y2], [x3,y3], [x4,y4]])
pts2 = np.float32([[0,0], [width,0], [0,height], [width,height]])
M = cv2.getPerspectiveTransform(pts1, pts2)
warped_img = cv2.warpPerspective(img, M, (width, height))
5 圖像像素操作
-
訪問與修改像素值:
# 訪問單個像素
pixel = img[100, 100] # BGR值
# 修改像素
img[100, 100] = [255, 0, 0] # 設置為藍色
-
圖像ROI(Region of Interest)提取:
roi = img[y_start:y_end, x_start:x_end]
四、實戰任務建議
實戰 1:圖像加載 + 顯示 + 保存
import cv2img = cv2.imread('example.jpg')
cv2.imshow('Image', img)
cv2.imwrite('saved.jpg', img)
cv2.waitKey(0)
cv2.destroyAllWindows()
實戰 2:灰度圖 + 邊緣檢測 + 圖像疊加
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
edges = cv2.Canny(gray, 100, 200)
cv2.imshow('Edges', edges)
實戰 3:人臉檢測(OpenCV自帶Haar模型)
face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + "haarcascade_frontalface_default.xml")
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
faces = face_cascade.detectMultiScale(gray, 1.3, 5)
for (x, y, w, h) in faces:cv2.rectangle(img, (x, y), (x+w, y+h), (255, 0, 0), 2)
cv2.imshow('Faces', img)
實戰 4:攝像頭實時圖像 + 邊緣檢測
cap = cv2.VideoCapture(0)
while True:ret, frame = cap.read()edges = cv2.Canny(frame, 100, 200)cv2.imshow('Edges Live', edges)if cv2.waitKey(1) == 27: # ESC退出break
cap.release()
cv2.destroyAllWindows()
五、推薦學習資源
教程/文檔:
-
OpenCV 官方文檔(英文)
-
OpenCV-Python 中文教程
視頻教程:
-
B站推薦關鍵詞:
OpenCV Python 零基礎入門
-
YouTube 推薦頻道:
Murtaza's Workshop - Robotics and AI
六、階段一小項目
項目名稱 | 描述 | 提示 |
圖像變換工具 | 圖像輸入 → 濾波 → 邊緣檢測 → 變換 | 用 OpenCV 實現 GUI 可加分 |
實時攝像頭特效 | 實時處理圖像并添加濾鏡/變形效果 | 攝像頭輸入、濾鏡算法、鍵盤控制 |
人臉截取工具 | 從照片中自動檢測人臉并保存為頭像圖像 | 使用 Haar+裁剪 |
?
擴展閱讀:
AI 技術&AI開發框架 | AI 技術&AI開發框架 |
深度解析 AI 應用開發流程 | 深度解析 AI 應用開發流程 |
深度解析 AI 開發的全棧生態 | 深度解析 AI 開發的全棧生態 |
從0到1:AI 全棧項目實戰模板 | 從0到1:AI 全棧項目實戰模板 |
計算機視覺(Computer Vision, CV) | 計算機視覺(Computer Vision, CV) |
計算機視覺階段一:CV入門基礎 | 計算機視覺階段一:CV入門基礎 |
計算機視覺階段二:經典算法與理論基礎(傳統CV) | 計算機視覺階段二:經典算法與理論基礎(傳統CV) |
計算機視覺階段三&四:深度學習 + CV 模型訓練及部署實戰 | 計算機視覺階段三&四:深度學習 + CV 模型訓練及部署實戰 |