計算機視覺階段一:CV入門基礎

目錄

學習目標:

一、核心知識點

二、實用工具推薦

三、學習內容與步驟

1.環境搭建

2.圖像獲取與顯示

3 圖像基礎處理

4 圖像幾何變換

5 圖像像素操作

四、實戰任務建議

實戰 1:圖像加載 + 顯示 + 保存

實戰 2:灰度圖 + 邊緣檢測 + 圖像疊加

實戰 3:人臉檢測(OpenCV自帶Haar模型)

實戰 4:攝像頭實時圖像 + 邊緣檢測

五、推薦學習資源

教程/文檔:

視頻教程:

六、階段一小項目


?

計算機視覺階段一:CV入門基礎,這是構建圖像理解能力的第一步。


學習目標:

掌握圖像的基本概念,熟練使用 OpenCV 進行圖像讀取、處理和簡單分析。


一、核心知識點

模塊內容備注
圖像基礎概念像素、RGB、灰度圖、通道、分辨率圖像是一個多維數組
顏色空間轉換RGB ? BGR ? HSVcv2.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 模型訓練及部署實戰

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/86044.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/86044.shtml
英文地址,請注明出處:http://en.pswp.cn/web/86044.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

新增MCP接入和AutoAgent,漢得靈猿AI中臺1.6版正式發布!

漢得靈猿(大圣)AI中臺1.6版本,經過數月迭代,現已正式發布! 新版本最被期待的新功能,無疑是4月份預告的MCP接入,而令人同樣激動的另一項新功能,則是AutoAgent動態規劃智能體。除了兩…

總結匯報思路

一、明確匯報目標 受眾需求:領導/客戶/團隊最關心什么?(結果?問題?下一步計劃?) 核心目的:展示成果?爭取資源?總結經驗?解決問題? 時…

文件鎖的藝術:深入解析 `fcntl(F_SETLK/F_GETLK)`

引言:在共享資源時代守護數據一致性 在多進程/多線程的應用場景中,文件作為一種共享資源常常面臨被并發訪問的挑戰。想象一個數據庫系統,多個客戶端可能同時嘗試修改同一數據文件;或者一個配置文件,需要確保在更新時不…

一個免費的視頻、音頻、文本、圖片多媒體處理工具

大家好,我是小悟。 給大家推薦一款可以免費使用的視頻、音頻、文本、圖片處理工具,名字叫百創工坊,不用下載,不用注冊,有免費的用就趕緊薅吧。 視頻工具 提取音頻:從視頻中提取音頻文件,支持多…

在 ef core 中操作復雜類型的序列化和反序列化時,如何全局設置 utf-8 編碼避免中文字符被轉義?

我們在使用 Entity Framework Core(EF Core) 時,如果希望 全局設置 JSON 序列化和反序列化使用 UTF-8 編碼,通常需要配置 System.Text.Json 的默認行為,因為 EF Core 6.0 及以上版本默認使用 System.Text.Json 進行 JS…

WPF CommunityToolkit.Mvvm 信使 (ObservableRecipient)

WPF CommunityToolkit.Mvvm 中的 ObservableRecipient 是什么? ObservableRecipient 是 .NET Community Toolkit MVVM 庫中的一個核心類,繼承自 ObservableObject。它專為 WPF 應用設計,提供以下核心功能: 基礎數據綁定支持&am…

《C++》命名空間簡述

文章目錄 一、命名空間定義二、訪問命名空間內的成員三、標準命名空間:std四、嵌套命名空間 一、命名空間定義 在C中,命名空間(namespace)是一種將標識符分組的機制,用于避免重命名。例如: int a 3;int main() {int a 0;print…

【路徑規劃】基于Matlab的改進RRT算法二維/三維路徑規劃

基于Matlab的改進RRT算法二維/三維路徑規劃 一、引言 在機器人學、自動駕駛等領域,路徑規劃是一個關鍵問題,它旨在為機器人或車輛找到一條從起始點到目標點的安全、高效的路徑。RRT(Rapidly-exploring Random Trees)算法作為一種…

PHP的命名空間與自動加載機制

在PHP 5.3版本之后,引入了命名空間的概念,這為解決全局命名沖突和促進代碼的模塊化提供了強有力的工具。命名空間允許開發者將類、函數和常量封裝在不同的命名空間中,從而避免了全局范圍內的名稱沖突問題。 命名空間基礎 命名空間在PHP中是…

OpenSIPS 邂逅 Kafka:構建高效 VoIP 消息處理架構

使用場景使用步驟 引入模塊組裝&發送數據消費數據故障轉移 使用場景 異步日志處理:將 OpenSIPS 中的 SIP 信令日志、通話記錄(CDR)等數據發送到 Kafka 隊列中。 事件通知與監控:利用 OpenSIPS 的 event_interface 模塊將 S…

《AI大模型應用技術開發工程師》學習總結

以下是對你提供的《AI大模型應用技術開發工程師》課程內容的系統梳理,已去除所有廣告、價格、報名、個人信息等內容,并補全了技術要點,最后給出客觀的學習建議和個人感想,適合公開分享或自我學習參考。 AI大模型應用技術開發工程師…

Python爬蟲實戰:研究LOSO相關技術

1. 引言 1.1 研究背景與意義 隨著互聯網數據的爆炸式增長,個性化推薦系統成為提升用戶體驗的關鍵技術。準確捕捉用戶興趣需要大量多維度數據,但獲取高質量標注數據面臨隱私保護、數據分散等挑戰。網絡爬蟲技術為自動采集用戶行為數據提供了解決方案,而如何有效評估模型在個…

stm32萬年歷仿真+keil5程序

stm32萬年歷 本設計是利用單片機實現一個簡易萬年歷系統,能夠準確顯示時、分、秒信息。用戶可通過特定按鍵對時間進行設置調整,具備基本的時間校準功能,可滿足日常簡易計時需求。運用了stm32單片機模塊內部定時器 / 計數器功能來實現精確計時…

操作系統--名稱解釋

第一章: 操作系統:位于硬件層之上,所有軟件層之下的一個系統軟件,是管理系統中各種軟硬件資源,方便用戶使用計算機系統的程序集合 并發:宏觀上是同時發生,但是再微觀是交替發生的(若干事件在同一時間間隔內發生,單CPU) 并行:微觀上同時發生(要求多個CPU) 共享:系統的資源可以…

2025.6.16-實習

2025.6.18--2025.6.23 1.使用Cocos,從0開發老虎棒子雞2D游戲。實現:AI自動選擇,倒計時,對戰邏輯,播放動畫,設置背景音樂等功能。 2.使用Cocos,開發2D手術游戲。實現:視頻、音頻控制播…

構建你的 AI 模塊宇宙:Spring AI MCP Server 深度定制指南

引言:當模塊化遇見 AI 在微服務架構的海洋中,MCP(Module Communication Protocol)就像一艘智能帆船,它讓不同 AI 模塊的通信變得優雅而高效。本文將帶你構建一艘屬于自己的 AI 智能帆船——自定義 Spring AI MCP Serv…

從數據到洞察:UI前端如何利用大數據優化用戶體驗

hello寶子們...我們是艾斯視覺擅長ui設計、前端開發、數字孿生、大數據、三維建模、三維動畫10年經驗!希望我的分享能幫助到您!如需幫助可以評論關注私信我們一起探討!致敬感謝感恩! 在當今數字化時代,數據如同蘊藏著無限價值的寶藏,源源不斷地產生并積累…

SQLite3 在嵌入式C環境中存儲音頻/視頻文件的專業方案

SQLite3 在嵌入式C環境中存儲音頻/視頻文件的專業方案 在嵌入式系統中存儲大型媒體文件需要平衡存儲效率、訪問速度和資源限制。以下是針對嵌入式C環境的優化方案: 一、存儲策略選擇 1. 直接存儲 vs 文件路徑存儲 方法優點缺點適用場景BLOB直接存儲數據一致性高…

區塊鏈技術概述:從比特幣到Web3.0

目錄 區塊鏈技術概述:從比特幣到Web3.0引言:數字革命的下一篇章1. 區塊鏈技術基礎1.1 區塊鏈定義與核心特征1.2 區塊鏈數據結構可視化 2. 比特幣:區塊鏈的開端2.1 比特幣的核心創新2.2 比特幣交易生命周期 3. 以太坊與智能合約革命3.1 以太坊…

Petrel導入well數據

加載井口位置數據:井頭文件應包括name, X, Y, KB, TD這些基本信息,文件格式為txt或prn格式都可。具體步驟:① input面板下?右鍵import file,進入import file界面,選擇文件格式?well heads(*.*&#xff09…