Python 中 OpenCV (cv2) 安裝與使用介紹

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)

四、常見問題解決

  1. 導入錯誤 ImportError: libGL.so.1
    在 Linux 上安裝依賴:

    sudo apt install libgl1-mesa-glx
    
  2. 視頻無法打開
    檢查攝像頭權限或視頻路徑,嘗試:

    cap = cv2.VideoCapture(0, cv2.CAP_DSHOW)  # Windows 專用
    
  3. 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》

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

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

相關文章

微軟WSUS替代方案

微軟WSUS事件回顧2025年7月10日,微軟最新確認Windows Server Update Services(WSUS)出現了問題,導致IT管理員無法正常同步和部署Windows更新。WSUS是允許管理員根據策略配置,將更新推送到特定計算機,并優化…

Minio 分布式集群安裝配置

目錄創建 mkdir -p /opt/minio/run && mkdir -p /etc/minio && mkdir -p /indata/disk_0/minio/datarun:啟動腳本及二進制文件目錄/etc/minio:配置文件目錄data:數據存儲目錄下載 minio wget https://dl.min.io/server/minio…

Spring Boot + ShardingSphere 實現分庫分表 + 讀寫分離實戰

🚀 Spring Boot ShardingSphere 實現分庫分表 讀寫分離(涵蓋99%真實場景) 🏷? 標簽:ShardingSphere、分庫分表、讀寫分離、MySQL 主從、Spring Boot 實戰 分庫分表 vs 讀寫分離 vs 主從配置與數據庫高可用架構區別 …

將普通用戶添加到 Docker 用戶組

這樣可以避免每次使用 Docker 命令時都需要 sudo。以下是具體步驟:1. 創建 Docker 用戶組(如果尚未存在) 默認情況下,安裝 Docker 時會自動創建 docker 用戶組。可以通過以下命令檢查: groupadd docker(如果…

Scrapy(一):輕松爬取圖片網站內容?

目錄 一、CrawlSpider 簡介? 二、實戰案例:圖片網站爬取? 三、代碼解析:核心組件詳解? 類定義: 2.核心屬性:? 3.爬取規則(Rules):? 4.數據提取方法(parse_item)…

使用 systemd 的原生功能來實現 Redis 的自動監控和重啟,而不是依賴額外的腳本最佳實踐方案

使用 systemd 的原生功能來實現 Redis 的自動監控和重啟,而不是依賴額外的腳本最佳實踐方案方案 1:配置 systemd 服務文件(推薦)1. 檢查/創建 Redis 的 systemd 服務文件2. 配置關鍵參數(覆蓋配置示例)3. 重…

Eclipse 代碼模板

Eclipse 代碼模板 引言 Eclipse 作為一款功能強大的集成開發環境(IDE),深受廣大開發者的喜愛。在編程過程中,使用代碼模板可以大大提高開發效率,減少重復勞動。本文將詳細介紹 Eclipse 代碼模板的配置、使用方法以及一…

輸電線路防外破聲光預警裝置 | 防山火/防釣魚/防施工安全警示系統

在輸電網絡的安全保障中,外力破壞是一個不容忽視的問題,各類隱患可能對電力系統造成嚴重影響。TLKS-PMG-WP 輸電線路聲光防外破警示裝置在應對這類挑戰時,有著獨特的技術表現,下面從功能和技術參數兩方面進行詳細介紹。核心功能解…

STM32——STM32CubeMX

總:STM32——學習總綱 一、簡介 注意,非邏輯代碼。 可兼容不同系列的STM32Cube固件包。 STM32Cube前置知識鏈接: STM32——HAL庫 不可過多依賴,此工具只針對STM32芯片,類似英飛凌芯片無法配置。主要用于參考。 二、安…

Java NIO 核心原理與秋招高頻面試題解析

一、NIO 概述Java NIO(New I/O 或 Non-blocking I/O)是 Java 1.4 引入的一套全新 I/O API,位于 java.nio 包下。NIO 提供了與傳統 BIO(Blocking I/O)完全不同的 I/O 處理方式,通過非阻塞模式、緩沖區&#…

vue3+element-plus,el-popover實現篩選彈窗的方法

實現一個篩選框,點擊篩選按鈕出現彈窗,彈窗內有選擇框/輸入框/單選框等等,底部有重置/確定兩個按鈕。需求:點擊篩選外部其他位置可以關閉彈窗,關閉彈窗后已編輯的數據不保存,點擊確定按鈕關閉彈窗&#xff…

python每日一題 貪心算法練習

在一條環路上有 n 個加油站,其中第 i 個加油站有汽油 gas[i] 升。你有一輛油箱容量無限的的汽車,從第 i 個加油站開往第 i1 個加油站需要消耗汽油 cost[i] 升。你從其中的一個加油站出發,開始時油箱為空。給定兩個整數數組 gas 和 cost &…

Python + Pika RabbitMQ集群壓測完整方案

一、最近搭建了個rabbitmq集群 三個磁盤節點,上生產環境之前想做個壓測,測試下穩定性,參考Deepseek做了如下測試方案二、核心代碼實現: 配置文件 (config.py) import os RABBITMQ_NODES [amqp://admin:123456192.168.0.175:8101,…

【第7話:相機模型3】自動駕駛IPM圖像投影拼接技術詳解及代碼示例

IPM圖像投影拼接技術詳解 IPM(逆透視映射)圖像投影拼接技術是一種在計算機視覺中廣泛應用的圖像處理方法,主要用于將多個透視視圖的圖像轉換為鳥瞰視圖并拼接成一個無縫的大場景圖像。該技術特別適用于自動駕駛、機器人導航和監控系統等領域&…

【測試工程思考】測試自動化基礎能力建設

1 回顧 傳統軟件研發體系下定義的軟件測試是從用戶視角設計的。測試是試圖窮盡用戶行為的工程,從測試用例(use case)的英文定義就可見一般。測試的邏輯資產就是用自然語言去描述用戶的操作行為或路徑。 但隨著軟件工程向分布式架構和敏捷交付…

進階向:AI聊天機器人(NLP+DeepSeek API)

什么是AI聊天機器人? AI聊天機器人是一種通過自然語言處理(NLP)技術模擬人類對話的智能程序系統。其核心是建立在機器學習算法和大型語言模型基礎上的對話引擎,能夠理解用戶的自然語言輸入,分析語境和意圖,并生成符合上下文的相關回復。 這類機器人系統通常包含以下幾個…

一個C#的段子

猜猜按鈕的結果是啥。 public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void Form1_Load(object sender, EventArgs e) { } public static bool flag true; privat…

使用 gptqmodel 量化 Qwen3-Coder-30B-A3B-Instruct

代碼部分 : quantize_qwen3_coder_30b_a3b_instruct_gptq.py import os########## 環境變量設置 ########## # 當前可用的 CUDA 編號 os.environ["CUDA_VISIBLE_DEVICES"] "1" # GPU 顯存資源片段優化 os.environ["PYTORCH_CUDA_ALLOC_CONF"] …

基于python、django的疫苗接種管理系統

基于python、django的疫苗接種管理系統

Go語言實戰案例:使用sync.Map構建線程安全map

在并發編程中,共享資源的訪問是一個繞不開的問題。Go 中的 map 在并發讀寫時是不安全的,直接使用可能導致程序 panic。因此,在多協程同時訪問 Map 的場景下,必須采取有效的同步措施。本篇將通過一個實戰案例,介紹 Go 的…