人工智能-python-OpenCV 圖像基礎認知與運用

文章目錄

  • OpenCV 圖像基礎認知與運用
    • 1. OpenCV 簡介與安裝
      • OpenCV 的優勢
      • 安裝 OpenCV
    • 2. 圖像的基本概念
      • 2.1. 圖像的存儲格式
      • 2.2. 圖像的表示
    • 3. 圖像的基本操作
      • 3.1. 創建圖像窗口
      • 3.2. 讀取與顯示圖像
      • 3.3. 保存圖像
      • 3.4. 圖像切片與區域提取
      • 3.5. 圖像大小調整
    • 4. 圖像繪制與注釋
      • 4.1. 繪制直線、圓形和矩形
      • 4.2. 繪制文本
    • 5. 視頻處理基礎
    • 6. 總結


OpenCV 圖像基礎認知與運用

在現代計算機視覺領域,OpenCV 是最常用的開源計算機視覺庫之一。它為開發者提供了強大的圖像處理、計算機視覺和機器學習工具。本文將詳細介紹 OpenCV 中圖像的基礎認知和常見運用方法,包括圖像的表示、讀取、顯示、處理等內容,并拓展相關的知識。


1. OpenCV 簡介與安裝

OpenCV 是一個開源的計算機視覺庫,提供了眾多的圖像處理和計算機視覺工具。它不僅支持多種編程語言,如 C++、Python 和 Java,還能在多個平臺上使用,包括 Windows、Linux 和 macOS。

OpenCV 的優勢

  • 開源免費:OpenCV 是一個開源的計算機視覺庫,任何人都可以自由使用、修改和分發。
  • 多語言支持:OpenCV 支持多種編程語言,如 Python、C++、Java 等,提供了跨平臺支持。
  • 豐富的 API:OpenCV 提供了大量函數接口,涵蓋了圖像處理、機器學習、特征檢測、對象識別等多個領域。

安裝 OpenCV

你可以通過以下幾種方式安裝 OpenCV:

  • 通過 conda 安裝

    conda install -c conda-forge opencv
    
  • 通過 pip 安裝

    pip install opencv-python
    
  • 通過 pip鏡像源 安裝(這里提供的是清華的PyPI 鏡像源)

    pip install -i https://pypi.tuna.tsinghua.edu.cn/simple opencv-python
    

2. 圖像的基本概念

2.1. 圖像的存儲格式

圖像是由 像素 組成的,每個像素存儲了圖像的顏色、亮度等信息。通常情況下,圖像以矩陣的形式存儲在計算機中。圖像可以是 灰度圖像彩色圖像,而 OpenCV 中常用的是 8 位圖像

  • 灰度圖像:二維矩陣,每個元素代表一個灰度值,通常范圍是 0-255。
  • 彩色圖像:三維矩陣,每個像素由三個顏色通道(R、G、B)構成,每個通道的像素值范圍是 0-255。

2.2. 圖像的表示

OpenCV 中,圖像數據以 numpy 數組的形式表示。對于彩色圖像,圖像數據是一個三維數組 (height, width, channels),其中:

  • height:圖像的高度(行數)
  • width:圖像的寬度(列數)
  • channels:圖像的顏色通道數,彩色圖像有 3 個通道(RGB),灰度圖像只有 1 個通道。

3. 圖像的基本操作

3.1. 創建圖像窗口

在 OpenCV 中,圖像窗口用于顯示圖像。你可以使用 cv2.namedWindow() 函數來創建一個窗口:

cv2.namedWindow("Window Name", cv2.WINDOW_NORMAL)

cv2.WINDOW_NORMAL 允許你調整窗口的大小。

3.2. 讀取與顯示圖像

你可以通過 cv2.imread() 讀取圖像,并使用 cv2.imshow() 顯示圖像:

import cv2# 讀取圖像
img = cv2.imread('image.jpg')# 顯示圖像
cv2.imshow('Image Window', img)# 等待按鍵輸入,按任意鍵關閉圖像窗口
cv2.waitKey(0)
cv2.destroyAllWindows()
  • cv2.waitKey(0):等待用戶按鍵。
  • cv2.destroyAllWindows():關閉所有顯示的窗口。

3.3. 保存圖像

保存圖像到本地文件:

cv2.imwrite('output_image.jpg', img)

3.4. 圖像切片與區域提取

圖像切片用于從圖像中提取指定的區域。你可以使用切片操作來提取矩形區域:

roi = img[100:200, 150:250]  # 從 (100, 150) 到 (200, 250) 的矩形區域
cv2.imshow('ROI', roi)

確保切片操作的邊界在圖像尺寸范圍內。

3.5. 圖像大小調整

使用 cv2.resize() 函數可以調整圖像的尺寸:

resized_img = cv2.resize(img, (width, height))
  • widthheight 是目標圖像的寬度和高度。

4. 圖像繪制與注釋

4.1. 繪制直線、圓形和矩形

OpenCV 提供了函數來繪制基本圖形,如直線、圓形和矩形。

  • 繪制直線

    cv2.line(img, (start_x, start_y), (end_x, end_y), (255, 0, 0), 2)
    
  • 繪制圓形

    cv2.circle(img, (center_x, center_y), radius, (0, 255, 0), 2)
    
  • 繪制矩形

    cv2.rectangle(img, (top_left_x, top_left_y), (bottom_right_x, bottom_right_y), (0, 0, 255), 2)
    

4.2. 繪制文本

OpenCV 允許你在圖像上繪制文本:

cv2.putText(img, 'Hello, OpenCV!', (50, 50), cv2.FONT_HERSHEY_SIMPLEX, 1, (0, 255, 0), 2, cv2.LINE_AA)
  • (50, 50):文本起始位置。
  • cv2.FONT_HERSHEY_SIMPLEX:字體類型。
  • 1:字體大小。
  • (0, 255, 0):文本顏色(綠色)。
  • 2:文本粗細。

5. 視頻處理基礎

OpenCV 還支持視頻讀取與處理。你可以使用 cv2.VideoCapture() 讀取視頻文件或攝像頭數據,并使用 cap.read() 獲取每一幀圖像:

cap = cv2.VideoCapture(0)  # 讀取攝像頭視頻while True:ret, frame = cap.read()  # 讀取每一幀if not ret:breakcv2.imshow('Video', frame)if cv2.waitKey(1) & 0xFF == ord('q'):  # 按 'q' 鍵退出breakcap.release()
cv2.destroyAllWindows()
  • cap.read():返回當前幀的圖像。
  • cv2.waitKey(1):每 1 毫秒檢查一次鍵盤輸入。

6. 總結

本文介紹了 OpenCV 的圖像基礎知識,并展示了如何使用 OpenCV 進行圖像處理和繪制操作。你學習了以下內容:

  • 圖像的基本概念:如何表示圖像、如何使用 OpenCV 進行圖像處理。
  • 圖像操作:圖像的讀取、顯示、保存、大小調整、切片等基本操作。
  • 繪圖與注釋:如何在圖像上繪制直線、圓形、矩形以及文本。
  • 視頻處理:如何讀取和顯示視頻。

掌握 OpenCV 的這些基礎知識,能夠幫助你進行圖像處理、計算機視覺等任務的實現,并為后續深入學習更復雜的技術打下堅實基礎。

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

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

相關文章

Windows電腦添加、修改打印機的IP地址端口的方法

本文介紹在Windows電腦中,為打印機添加、修改IP地址,從而解決電腦能找到打印機、但是無法打印問題的方法。最近,辦公室的打印機出現問題——雖然在電腦的打印機列表能找到這個打印機,但是選擇打印時,就會顯示文檔被掛起…

告別復雜配置!Spring Boot優雅集成百度OCR的終極方案

1. 準備工作 1.1 注冊百度AI開放平臺 訪問百度AI開放平臺 注冊賬號并登錄 進入控制臺 → 文字識別 → 創建應用 記錄下API Key和Secret Key 2. 項目配置 2.1 添加依賴 (pom.xml) <dependencies><!-- Spring Boot Web --><dependency><groupId>o…

「iOS」——內存五大分區

UI學習iOS-底層原理 24&#xff1a;內存五大區總覽一、棧區&#xff08;Stack&#xff09;1.1 核心特性1.2 優缺點1.3函數棧與棧幀1.3 堆棧溢出風險二、堆區&#xff08;Heap&#xff09;;2.1 核心特性2.2 與棧區對比三、全局 / 靜態區&#xff08;Global/Static&#xff09;3.…

每日一題【刪除有序數組中的重復項 II】

刪除有序數組中的重復項 II思路class Solution { public:int removeDuplicates(vector<int>& nums) {if(nums.size()<2){return nums.size();}int index 2;for (int i 2; i < nums.size();i ) {if(nums[i] ! nums[index-2]) {nums[index]nums[i];}}return ind…

兼容性問題記錄

1、dialog設置高度MATCH_PARENT全屏后&#xff0c;三星機型和好像是一加&#xff0c;會帶出頂部狀態欄&#xff0c;設置隱藏狀態欄屬性無效。解決方法&#xff1a;高度不設置為MATCH_PARENT&#xff0c;通過windowmanager.getdefaultdisplay來獲取并設置高度&#xff0c;再設置…

6.數組和字符串

在C語言中&#xff0c;數組和字符串是基礎且重要的概念。它們用于存儲和操作一系列相同類型的元素或字符序列。數組1. 數組定義與初始化數組是一系列相同類型的數據項的集合&#xff0c;這些數據項可以通過一個共同的名字來引用。數組中的每個元素都有一個索引&#xff08;也稱…

odoo代碼分析(一)

Odoo 是一套基于網絡的開放式源代碼商業應用套件,既可以作為獨立應用運行,也可以作為集成的全功能 ERP 系統使用。Odoo 平臺采用模塊化架構,允許組織根據自身需求起步,并在需求增長時擴展功能。 什么是 Odoo? Odoo 提供了一個完整的商業應用生態系統,包括: 客戶關系管…

從“人工眼”到‘智能眼’:EZ-Vision視覺系統如何重構生產線視覺檢測精度?

制造業是我國實體經濟的基礎&#xff0c;是國內經濟增長的重要引擎。制造業智能化建設是當下的必然趨勢&#xff0c;然而目前依舊有很多中小型企業因為成本原因&#xff0c;無法加快智能化制造的步伐。在智能檢測領域更是如此&#xff0c;很多企業依舊在采用人工檢測&#xff0…

Etcd原理基礎學習

etcd 是一個開源的分布式鍵值存儲系統&#xff0c;專注于提供高可用性、強一致性的數據存儲與訪問&#xff0c;廣泛應用于分布式系統的服務發現、配置管理和協調任務。以下是其核心特性和應用場景的詳細介紹。接下來就看看Etcd如何實現服務注冊&#xff0c;以及如何通過Raft算法…

【硬件-筆試面試題】硬件/電子工程師,筆試面試題-32,(知識點:模數轉換器,信噪比,計算公式,)

目錄 1、題目 2、解答 步驟一&#xff1a;明確理想 ADC 的信噪比公式 步驟二&#xff1a;推導公式的來源 步驟三&#xff1a;得出答案 3、相關知識點 一、信噪比&#xff08;SNR&#xff09;的定義 二、理想 ADC 的量化噪聲 三、滿量程正弦波信號的功率 四、信噪比公…

Redis過期數據的刪除策略是什么?有哪些?

定時刪除&#xff1a;- 每個設置了TTL的key中都會創建一個計時器&#xff0c;等到過期時間就會立即刪除- 對內存友好&#xff0c;但是會占用大量的CPU資源去處理過期數據&#xff0c;從而影響緩存的吞吐量和響應時間惰性刪除&#xff1a;- 設置了key的過期后&#xff0c;不會立…

linux dd命令詳解

dd 是一個功能強大的 Unix/Linux 命令行工具&#xff0c;用于低級別的字節流操作&#xff0c;常用于創建、復制、轉換和處理文件或設備數據。它在 macOS 和 Linux 系統上都可用&#xff0c;但在 macOS 上有一些細微差異。本文將詳細講解 dd 命令的用法&#xff0c;包括參數、常…

多線程同步技術是用于協調多個線程訪問共享資源或執行順序的機制,以避免數據競爭、死鎖、線程不安全等問題

多線程同步技術是用于協調多個線程訪問共享資源或執行順序的機制,以避免數據競爭、死鎖、線程不安全等問題。 在提供的代碼中,存在多線程操作加熱板的場景,涉及鎖競爭和硬件資源訪問,優化多線程同步可以顯著提升程序性能和穩定性。 以下是多線程同步技術的詳細解釋、常見…

CRMEB標準版,從創建數據表到實現最基礎增刪改查的實現過程

很多使用了CRMEB單商戶系統的童鞋在進行二開的時候&#xff0c;都會遇到新建了數據表之后不知道對數據表怎么進行操作。那么&#xff0c;這篇文章將帶你完整的實現一遍&#xff0c;以后就不會怕啦。一、創建數據表就以最簡單的為例&#xff0c;創建一個學生的信息表編號姓名性別…

J2EE模式---數據訪問對象模式

數據訪問對象模式基礎概念數據訪問對象模式&#xff08;Data Access Object Pattern&#xff0c;簡稱 DAO 模式&#xff09;是一種結構型設計模式&#xff0c;其核心思想是將數據訪問邏輯與業務邏輯分離&#xff0c;通過一個抽象層&#xff08;DAO&#xff09;來處理數據的持久…

【OpenCV篇】OpenCV——02day.圖像預處理(1)

目錄 前言 一、圖像色彩空間轉換 1 RGB顏色空間 2 顏色加法 3 顏色加權加法 4 HSV顏色空間 5 RGB轉Gray(灰度) 二、灰度實驗 1 灰度圖 2 最大值法 3 平均值法 4 加權均值法 5 兩個極端的灰度值 三、圖像二值化處理 二值圖像 1 閾值法(THRESH_BINARY) 2 反閾值…

經典IDE之Turbo C

寫的程序不多&#xff0c;換過的 IDE 不少&#xff0c;本文將列舉曾經用過的不同 C 語言相關的 IDE 環境&#xff0c;既是紀念&#xff0c;也是回憶。值得注意的是 IDE 的出現是為了提高開發效率&#xff0c;有一個相對成熟的編譯環境和程序。從編程的角度來看&#xff0c;過分…

Go 多模塊倉庫標簽管理教程

為了方便自己開發&#xff0c;自己寫了個小工具&#xff1a;DzhGO 代碼生成工具 功能特點標題 初始化項目基礎結構生成插件模塊代碼生成模型和實體代碼生成服務接口和實現代碼支持 admin 和 app 兩種模塊類型生成項目基礎目錄 具體介紹看倉庫&#xff1a; https://github.co…

IDEA 類上方注釋 簽名

File -->settings–>Editor–>File and Code Templates–>class新建 Class 類上方添加內容&#xff1a;/*** author Jagger* since ${DATE} ${TIME}*/

衛星通信終端天線對星之:參考星對星

我們在前面的文章中介紹了3種衛星通信終端的對星模式&#xff0c;分別是&#xff1a; 衛星通信終端天線的5種對星模式之一&#xff1a;信標跟蹤 衛星通信終端天線的5種對星模式之二&#xff1a;功率檢測型載波跟蹤 衛星通信終端天線的5種對星模式之二&#xff1a;DVB跟蹤 今…