OpenCV計算機視覺實戰(3)——計算機圖像處理基礎

OpenCV計算機視覺實戰(3)——計算機圖像處理基礎

    • 0. 前言
    • 1. 像素和圖像表示
      • 1.1 像素
    • 2. 色彩空間
      • 2.1 原色
      • 2.2 色彩空間
      • 2.3 像素和色彩空間
    • 3. 文件類型
      • 3.1 圖像文件類型
      • 3.2 視頻文件
      • 3.3 圖像與視頻
    • 4. 計算機圖像編程簡史
    • 5. OpenCV 概述
    • 小結
    • 系列鏈接

0. 前言

計算機視覺不同于計算機圖形學和圖像管理。計算機視覺側重于開發使計算機能夠理解和解釋視覺信息的算法和系統,計算機圖形學涉及創建、渲染和操作圖像和視覺內容,以便進行顯示或模擬,圖像管理(壓縮)技術用于減小圖像文件的大小以便存儲和傳輸。本節將對計算機成像的基礎知識進行簡要介紹,討論像素、色彩空間、圖像格式和圖像處理等內容。

1. 像素和圖像表示

在本節中,我們從圖像處理的基礎知識開始,探討圖像在計算機上是如何表示的,計算機如何管理顯示器,屏幕上的不同形狀和顏色是如何實現的,不同的圖像如何平滑移動并形成動態畫面。

1.1 像素

像素是圖像中的最小單位,是表示單個點的顏色和亮度的基本構建塊。當像素組合在一起時,就創建了一幅圖像。像素通常表示顯示器或圖像傳感器上的一個正方形或矩形區域,包含了關于應在特定位置顯示或捕獲的顏色和光強度的信息。在圖像的數字表示中,像素以網格狀的模式排列,形成行和列,這個網格中的每個像素都有特定的位置或坐標,比如使用坐標 (x, y) 唯一的標識和操作每個像素。像素用于表示圖像的方式如下:

  • 顏色信息:數字圖像中的每個像素都存儲著顏色信息。在 RGB 顏色模型中,一個像素由三個顏色通道表示:紅色、綠色和藍色,每個通道的強度或亮度通常用從 0255 (8 位二進制值)或更高位深度的數值來表示,從而確定該像素的顏色。通過組合相鄰像素的顏色值,形成完整的圖像
  • 空間排列:像素按照規則的網格模式排列。圖像的分辨率由水平和垂直維度中像素的數量確定,比如全高清分辨率的 1920x1080 像素。更高的分辨率通常意味著更多的像素,以產生更細致的細節和更清晰的圖像
  • 圖像顯示:當像素顯示在屏幕上或打印在紙上時,它們共同組成我們觀察到的圖像。每個像素根據其顏色和強度值發射或反射光,組合在一起時創建了圖像的視覺表示
  • 圖像處理:像素是各種圖像處理和操作技術的基礎。如調整大小、裁剪、旋轉、調整亮度和對比度、應用濾鏡等操作都是在單個像素或像素組上執行的,以修改圖像的外觀或內容
  • 圖像存儲:數字圖像以文件形式存儲,最常見的圖像文件格式包括 JPEGPNGBMP 等,存儲了像素信息以及額外的元數據和壓縮方法。這些文件存儲了每個像素的顏色值,能夠在顯示或進一步處理時重建圖像。

理解像素的概念對于處理數字圖像至關重要,無論是圖像的捕捉、顯示還是操作。像素作為形成數字圖像中豐富視覺信息的基本單位,共同構成了我們在數字圖像中感知到的豐富視覺信息

2. 色彩空間

圖像處理中的色彩空間指的是不同的模型或表示方法,定義了顏色在圖像中的表示和編碼方式。每個色彩空間都有自己一套規則和參數來表示顏色,用于在各種應用程序中準確捕捉、處理和顯示顏色,包括攝影、計算機圖形和圖像分析。

2.1 原色

根據三色視覺理論,人眼有三種類型的色彩感受器(錐體)負責顏色感知。這三種感受器對光的不同波長敏感,它們的反應組合使我們能夠感知到豐富的色彩。
在物理學中,原色指的是通過加性色彩混合可以得到所有其他顏色的一組顏色。在物理世界中,原色是紅色、綠色和藍色。自然界中的所有顏色都可以通過以不同比例混合這三種顏色來實現。例如,當我們看到一個檸檬時,我們將其視為黃色并不是因為檸檬本身是黃色的,檸檬吸收了除紅色和綠色以外的所有光波,這些反射的紅色和綠色光落在我們的眼睛上并刺激了紅色和綠色的感受器,這種組合使我們的大腦將顏色處理為黃色。同樣,感知品紅色涉及對紅色和藍色感受器的刺激。
需要注意的是,物理學中的原色與印刷中使用的減法原色以及其他不同上下文中使用的顏色模型不同。物理學中的原色與三色視覺理論有關,并用于解釋顏色感知的生理基礎,通過理解原色的性質以及它們如何結合形成其他顏色,可以更好地理解顏色視覺、光吸收和光在各種材料和系統中的行為原理。

2.2 色彩空間

圖像處理中的色彩空間指的是不同的模型或表示方法,定義了顏色在圖像中的表示和編碼方式。每個色彩空間都有自己一套規則和參數來表示顏色,用于在各種應用程序中準確捕捉、處理和顯示顏色,包括攝影、計算機圖形和圖像分析。

2.2.1 加色法

加色法( RGB 色彩空間)是圖像處理、計算機圖形和顯示技術中最廣泛使用的顏色模型之一,通過組合三種原色——紅色 (R)、綠色 (G) 和藍色 (B) 來表示顏色。在 RGB 色彩空間中,圖像中的每個像素由三個顏色通道表示:紅色、綠色和藍色。每個顏色通道的強度或亮度通常由一個范圍從 02558 位值表示,其中 0 表示無強度(暗),255 表示最大強度(全亮度)。通過調整這三個通道的強度,可以創建任何顏色,這種色彩空間遵循加色法原理。RGB 色彩空間具有以下幾個重要特性:

  • 加色混合:在 RGB 模型中,通過添加不同強度的紅色、綠色和藍色光來創建顏色。當三種原色的強度都設置為最大值 (255, 255, 255) 時,結果是白色。相反,當三種原色的強度都設置為最小值 (0, 0, 0) 時,結果是黑色
  • 色域:RGB 色彩空間定義了可以表示的特定范圍的顏色,這個顏色范圍通常被稱為色彩空間的色域。RGB 色彩空間的色域取決于所使用的特定設備或介質的顏色再現能力,比如顯示器或打印機
  • 顏色混合:通過組合不同強度的紅色、綠色和藍色,可以創建各種顏色。例如,相等強度的紅色和綠色產生黃色,而相等強度的紅色和藍色產生洋紅色。不同強度的組合可以表示廣泛的顏色范圍
  • 色深度:色深度是用于表示每個顏色通道的位數。例如,8 位色深度允許每個通道有 256 個強度級別,總共可表示 1670 萬種可能的顏色 ( 25 6 3 256^3 2563)。更高的色深度,如 16 位或 24 位,提供了更高的精度和更多可用的顏色

RGB 色彩空間能夠在各種應用中使用,包括數字攝影、計算機圖形、視頻處理和顯示技術。作為許多圖像文件格式(如 JPEGPNGBMP)中顏色表示的基礎,其中像素值存儲為 RGB 值。需要注意的是,RGB 色彩空間有多種變體,如 Adobe RGBsRGB,其色域和顏色特性略有不同。這些變體旨在滿足特定需求,如為打印提供準確的顏色再現或為網絡和數字內容提供標準化的色彩空間。

2.2.2 減色法

CMYK 色彩空間,也稱為過程色模型,主要用于印刷和顏色再現。CMYK 代表青色 (C, cyan)、洋紅色 (M, magenta)、黃色 (Y, yellow) 和黑色 (K, key)。與使用加色混合的 RGB 色彩模型不同,CMYK 色彩模型使用減色混合來實現廣泛的顏色范圍。
CMYK 色彩空間中,從白色背景開始,通過減去不同強度的青色、洋紅色、黃色和黑色顏料來創建目標顏色。四種油墨全強度存在時,產生幾乎是黑色的深色,而所有油墨的缺失則產生白色。通過調整這四種油墨顏色的百分比,可以為印刷再現出廣泛的顏色。CMYK 色彩空間具有以下特性:

  • 減色混合:與 RGB 模型不同,CMYK 模型從白色背景(如紙張的顏色)開始,并通過減去或吸收特定波長的光來創建顏色。當四種油墨全強度應用時,它們幾乎吸收所有光,產生幾乎是黑色的深色
  • 色域:與 RGB 色彩空間相比,CMYK 色彩空間的色域較小。這是因為減色墨水的組合不能像加色光混合那樣產生相同范圍的顏色。因此,一些在 RGB 中可以表示的鮮艷和高飽和度的顏色可能無法在 CMYK 中準確再現
  • 黑色墨水:CMYK 中的 K 代表黑色墨水。將黑色墨水添加到顏色模型中,因為青色、洋紅色和黃色墨水的組合不能產生真正的黑色。使用黑色墨水減少了創建深黑色所需墨水的數量,并有助于提高印刷效率
  • 顏色分離:在印刷過程中,CMYK 色彩模型用于將圖像分離成四種不同的色板,每種顏色一個,每個色板表示圖像該區域的相應墨水顏色的強度。在印刷過程中,這些色板結合使用以重新創建原始的全彩圖像
  • RGB 轉換到 CMYK:在準備圖像進行印刷時,通常需要將 RGB 圖像轉換為 CMYK 色彩空間,用于確保圖像中的顏色經過正確調整,以匹配印刷過程和打印機使用的特定 CMYK 色彩配置文件的顏色

需要注意的是,從 RGB 轉換到 CMYK 時,由于兩種色彩空間之間的色域差異,可能會導致某些顏色精確度或飽和度的損失。因此,在最終打印之前,建議預覽并對圖像進行任何必要的調整。CMYK 色彩空間廣泛應用于各種印刷應用中,包括雜志、宣傳冊、包裝和其他印刷材料。通過準確表示顏色,CMYK 模型確保在最終打印輸出中盡可能地再現所需的顏色。

2.2.3 灰度圖像

灰度圖像,也稱為黑白圖像,由從黑色到白色的不同強度的灰色組成。與具有多個顏色通道的彩色圖像不同(例如 RGB 具有紅色、綠色和藍色通道),灰度圖像只有一個通道,表示每個像素的亮度或強度。灰度圖像具有以下特性:

  • 單通道:灰度圖像具有單個通道,通常稱為灰度通道或亮度通道。圖像中的每個像素由一個值表示,對應于該像素的光強度。在 8 位灰度圖像中,值通常從 0 (黑色)到 255 (白色)變化,中間值表示不同強度的灰色
  • 無顏色:灰度圖像缺乏顏色信息。相反,它們僅依賴于亮度級別來表示圖像內容,簡化了圖像的表示和解釋
  • 清晰簡潔:灰度圖像通常具有簡潔和清晰的觀感。沒有顏色的干擾,灰度圖像強調視覺元素,如形狀、紋理和對比度,能夠有效地展示場景中的色調變化、陰影和高光
  • 轉換:通過彩色到灰度轉換的過程可以根據彩色圖像獲得灰度圖像,有多種算法和技術能夠將彩色圖像轉換為灰度圖像。一種常見的方法是通過計算每個像素的亮度,取紅色、綠色和藍色通道的加權平均值,因為人類對綠光更敏感
  • 存儲和處理:與彩色圖像相比,灰度圖像需要較少的存儲空間和計算資源。由于只有一個強度值通道,灰度圖像占用更少的內存,并且通常處理速度更快。適用于不需要顏色信息或在存儲和處理效率是重要考慮因素的應用。

灰度圖像在攝影、印刷、醫學成像、計算機視覺等領域有廣泛應用,可用于表示深度圖、增強圖像對比度、簡化圖像分析算法,或在視覺媒體中創造經典的黑白影像。
需要注意的是,一些灰度圖像可能還包含用于輔助信息的其他通道,例如用于透明度的 Alpha 通道或用于圖像分割的灰度掩碼,但灰度圖像的核心特征是在沒有顏色的情況下表示強度值。

2.2.4 其它色彩空間

除了上述色彩空間外,計算機應用程序中還包含其他色彩空間:

  • HSL:色調、飽和度、亮度 (HSL) 色彩空間基于三個參數定義顏色:色調、飽和度和亮度。色調表示顏色在色盤上的位置,飽和度表示顏色的強度或純度,而亮度表示感知到的亮度
  • HSV:色調、飽和度、值 (HSV) 類似于 HSL,但用值代替了亮度。值參數表示顏色的感知亮度,使其更適用于某些圖像處理操作,如調整亮度和對比度
  • LABCIE Lab*(LAB) 是一個獨立于設備的色彩空間,將顏色信息與亮度信息分開。它由三個通道組成:L 用于亮度,ab* 用于顏色信息。LAB 色彩空間通常用于顏色轉換和圖像分析任務。

當然圖像處理中使用的色彩空間遠不止這些,每種色彩空間都有其優點和應用。選擇合適的色彩空間取決于實際圖像處理任務的具體要求。

2.3 像素和色彩空間

像素和色彩空間共同定義了數字圖像的顏色表示。色彩空間定義了可以表示的顏色范圍,而像素則存儲了圖像中每個特定點的顏色信息,它們共同構成了數字成像系統中的顏色表示基礎。通過結合像素和色彩空間的概念,可以準確地表示、操作和再現數字圖像中的顏色。

  • 色彩表示:像素根據所使用的色彩空間存儲顏色信息。在 RGB 色彩空間中,每個像素保存紅色、綠色和藍色通道的顏色值,這些值確定了每種基本顏色的強度或亮度,它們的組合創建了像素的整體顏色外觀。類似地,在 CMYK 色彩空間中,像素存儲青色、洋紅、黃色和黑色通道的顏色值
  • 色域:色彩空間定義了色域,表示可以在特定色彩空間內表示的顏色范圍。色域指的是可以顯示或再現的所有可能顏色的集合,每個像素的顏色值都限制在所選色彩空間的色域內,這意味著它們只能表示該定義范圍內的顏色。色域受所用設備或介質的屬性和限制的影響,如顯示器、打印機或顏色配置文件
  • 色彩空間轉換:在處理圖像時,可能需要在不同的色彩空間之間進行轉換。色彩空間之間的轉換涉及將像素的顏色值從一個色彩空間映射到另一個色彩空間,同時盡可能準確地保留感知顏色外觀。確保在不同色彩空間的設備或系統之間傳輸圖像時,顏色能夠正確表示
  • 圖像處理:像素和色彩空間在圖像處理任務中也非常重要。當執行顏色校正、調整亮度/對比度、應用濾鏡或其他圖像操作時,通常會在指定色彩空間內對單個像素的顏色值進行計算,根據色彩空間的特性精確控制和修改圖像的外觀

為了更好的理解像素和色彩空間,結合這兩種概念創建圖像。下示 32x322D 整數矩陣可以渲染為字母 A
矩陣

矩陣中的每個元素都是一個單一的值,因此圖像是一個黑白圖像(灰度圖像)。

渲染結果

(255,0,0) 向量替換 255 值可以得到紅色 A(0,255,0) 得到綠色 A(0,0,255) 得到藍色 A

渲染結果

3. 文件類型

3.1 圖像文件類型

圖像格式和文件類型種類繁多,本節中我們將討論常用的流行格式,每種文件類型都有其特性、壓縮方法和支持的功能。常見的用于存儲圖像數據的圖像文件格式如下:

  • JPEG (Joint Photographic Experts Group): JPEG 是一種廣泛使用的有損壓縮格式,通過丟棄一些對視覺影響較小的圖像細節,實現了高壓縮比。JPEG 支持數百萬種顏色,常用于網絡圖像和數字攝影。由于是有損壓縮,反復編輯或重新保存為 JPEG 格式可能會導致圖像質量下降
  • PNG (Portable Network Graphics):PNG 是一種無損壓縮格式,支持全色和索引圖像,非常適合具有銳利邊緣、純色區域或透明度的圖像。PNG 文件并不產生 JPEG 文件中的有損壓縮偽影,能夠保持較高的細節和質量。通常用于網頁圖形、商標和帶有透明度的圖像
  • GIF (Graphics Interchange Format):GIF 是一種無損壓縮格式,支持動畫圖像和索引顏色。它使用最多 256 種顏色的有限調色板,適用于簡單的圖形、圖標和動畫。GIF 還支持透明度,允許像素完全透明或完全不透明。然而,GIF 的色深相對較低,并不太適合復雜圖像
  • TIFF (Tagged Image File Format):TIFF 是一種多功能文件格式,支持無損和有損壓縮。TIFF 提供存儲高色深圖像、多層和元數據的選項,通常用于專業攝影、平面設計和印刷行業,提供靈活性并保持圖像質量。然而,與 JPEGPNG 等格式相比,文件大小通常較大
  • Bitmap (BMP):BMP 是一種簡單且未壓縮的文件格式,用于存儲原始像素數據。它支持各種色深,并可以在不產生壓縮偽影的情況下保持高質量圖像。BMP 文件通常尺寸較大,因此不太適合網絡使用,通常用于特定應用,例如一些計算機圖形軟件或作為圖像編輯的中間格式
  • RAWRAW 格式是數字相機用于存儲相機傳感器捕獲的未經處理圖像數據的專有文件格式。RAW 文件保留最多的信息,并允許進行復雜的后期處理調整。然而,它們往往具有較大的文件大小,并需要專用軟件進行查看和編輯。

每種格式都有其優勢、壓縮率、顏色支持以及與不同軟件應用和設備的兼容性。文件格式的選擇取決于多種因素,例如預期用途、所需的圖像質量、壓縮程度、透明度需求以及兼容性要求。

3.2 視頻文件

同樣,有多種文件類型可以用于存儲視頻數據,每種文件類型都有其特點、壓縮方法和支持的功能。常見的視頻文件格式包括:

  • MP4 (MPEG-4):MP4 是一種廣泛使用的視頻文件格式,采用 MPEG-4 視頻壓縮標準。它支持各種音頻和視頻編解碼器,可實現高效壓縮和良好的視頻質量。MP4 文件與大多數媒體播放器和設備兼容,適用于流媒體、共享和存儲視頻。MP4 文件還可以包含字幕和元數據
  • AVI (Audio Video Interleave):AVI 是微軟開發的一種視頻格式,可以在單個文件中存儲音頻和視頻數據。AVI 文件可以支持各種編解碼器,但文件大小往往較大,并且壓縮效率較低。AVI 文件通常用于舊版視頻編輯軟件和在 Windows 系統上進行本地播放
  • MKV (Matroska Video):MKV 是一種開源多媒體格式,可以在單個文件中存儲多個音頻、視頻和字幕流。支持各種視頻編解碼器,并且可以保持高質量的視頻和音頻,MKV 文件通常用于存儲高清和超高清視頻內容
  • MOV (QuickTime Movie):MOV 是由 Apple 開發的一種文件格式,用于存儲視頻、音頻和其他媒體數據。MOV 文件通常與 QuickTime 相關聯,支持各種編解碼器和多個軌道。MOV 文件廣泛用于 Apple 生態,包括 macOSiOS 設備。它們可以包含高質量的視頻和音頻,并且適用于專業應用、視頻編輯和多媒體內容分發
  • WMV (Windows Media Video):WMV 是微軟開發的一種視頻文件格式,主要用于在 Windows 平臺上進行流媒體播放。WMV 文件可以支持各種編解碼器,并為高效的流媒體和存儲提供良好的壓縮。WMV 文件非常適合基于 Windows 的系統,在其他平臺和設備上的兼容性可能有限
  • FLV (Flash Video):FLV 是主要與 Adobe Flash Player 相關聯的視頻文件格式。支持通過互聯網進行視頻內容的流媒體播放。FLV 文件使用 Sorenson SparkVP6 編解碼器,并且可以提供高效的視頻傳輸。然而,由于對Flash技術的支持逐漸減弱,FLV 變得越來越不常見,并且正在被其他格式如 MP4 取代

每種格式都有其優勢、壓縮率、兼容性和功能。文件格式的選擇取決于多種因素,如預期用途、視頻質量要求、操作系統、流媒體能力以及與播放設備或編輯軟件的兼容性等因素。

3.3 圖像與視頻

視頻本質上是一系列圖像快速連續播放而形成的,視頻是一系列幀或靜止圖像,按順序呈現,以創建運動效果。視頻文件和圖像包含以下聯系:
● 逐幀結構:視頻由一系列幀組成,每幀代表一個單獨的圖像。每幀捕獲了特定時刻場景的快照,這些幀以較快速率(通常每秒 2430 幀)連續播放,以創建連續運動效果。
● 圖像壓縮:視頻文件使用多種壓縮技術來高效存儲和傳輸幀序列。壓縮通過編碼幀之間的差異、移除冗余并優化像素數據的存儲來減小文件大小,不同的視頻文件格式采用不同的壓縮算法,以平衡文件大小和視頻質量。
● 關鍵幀:在視頻壓縮中,關鍵幀(也稱為 I-幀)是完整且獨立的幀,可以單獨解碼。關鍵幀在視頻序列中充當參考點,而隨后的幀(稱為 P-幀B-幀)僅存儲與前一幀的變化或差異。這種壓縮技術通過避免存儲每幀的所有像素來減小文件大小。
● 播放:視頻文件可以在各種設備和平臺上播放。媒體播放器,無論是軟件還是硬件,都會解碼視頻文件的幀,并以快速連續的方式顯示它們。重建幀,并以預期幀率顯示幀來創建運動效果。
● 編輯和處理:視頻編輯軟件用于對視頻文件中的單個幀進行操作和處理,可以從視頻中提取幀,對特定幀應用濾鏡,重新排列幀的順序,甚至用不同的圖像替換幀,使其能夠精確控制視頻的視覺內容。
● 導出靜止圖像:視頻文件也可以導出或保存為單獨的圖像文件。通過從視頻文件中提取幀,可以在視頻中的特定時刻獲取靜止圖像。對于創建縮略圖、生成宣傳材料、捕捉關鍵時刻或分析單個幀進行視覺分析非常有用。

4. 計算機圖像編程簡史

圖像操作并非是一個獨特的軟件問題,操縱圖像數據的早在計算機出現之前就存在了。電影出現在19世紀末 20 世紀初,早在計算機問世之前就存在了,隨著電影的出現,編輯圖像和幀以提供更好的觀眾體驗的需求也隨之而來。因此,開發人員開發了幾種圖像處理技術,用于操縱亮度、對比度等參數,這些技術將圖像數據視為模擬信號,并使用數學函數執行信號操縱。
與計算機圖像處理相比,區別在于計算機圖像是數字化的。雖然將這些數字數據轉換為模擬信號并執行相同的圖像操作是完全可能的,但在數字領域操縱數據通常更為可取。特別是在需要詳細和精確的更改時,數字算法通常優于模擬算法。
在老式電視機,使用旋鈕可以調節亮度、對比度、銳度、顏色等設置。但是這些旋鈕后面沒有計算機或 GPU,圖像是使用模擬算法進行操作以達到預期效果的。

20 世紀 60 年代,研究人員開始探索數字圖像處理技術。早期開發用于基本圖像操作(如濾波、邊緣檢測和降噪)的算法。然而,計算資源有限,處理能力低。在 20 世紀 70 年代,計算機圖形學推動了光柵圖形系統的發展,這些系統使用像素網格來表示和顯示圖像。早期的編程語言如 FORTRAN 和匯編語言用來編寫圖像處理的代碼,但重點主要放在圖形渲染而不是圖像處理上。在 20 世紀 80 年代,計算機視覺和圖像分析作為計算機科學的子領域受到關注,研究人員開始探索解釋圖像的技術,開發了特征提取、對象識別和圖像理解的算法,編程語言如 CC++ 開始在圖像處理任務中流行起來。在 20 世紀 90 年代,圖像處理庫和 API 開始出現,為開發人員提供了用于圖像處理的預構建函數和算法,例如英特爾的圖像處理庫 (image processing library, IPL)、視覺接口庫 (vision interface library, VIL) 以及 ImageMagick 等,這些庫為開發人員提供了進行圖像操作的工具,如濾波、變換和色彩空間轉換,然而,這些庫通常彼此不兼容,功能也不完整。而 OpenCV 的出現,解決了這些問題。

5. OpenCV 概述

OpenCV (Open Source Computer Vision Library) 是一個開源的計算機視覺和圖像處理庫,提供了多樣性的功能和算法,旨在為開發實時計算機視覺應用程序提供全面的工具集。OpenCV 最初于 2000 年開發,后作為開源項目發布,使用 CC++ 編寫,并提供了多種編程語言的接口,包括 PythonJavaMATLAB/OctaveOpenCV 是跨平臺的,可以運行在 WindowsmacOSLinuxAndroidiOS 上。
OpenCV 提供了多樣性的功能和算法,涵蓋了計算機視覺和圖像處理的各個領域,主要包括:

  • 圖像和視頻 I/OOpenCV 能夠從文件、攝像頭和視頻流中讀取、寫入和處理圖像和視頻幀
  • 圖像處理:OpenCV 提供了常見圖像處理操作的函數,如濾波、模糊、調整大小、閾值處理、形態學操作和色彩空間轉換
  • 特征檢測和描述:OpenCV 支持特征檢測算法,如 Harris 角點檢測、FASTSURFORBSIFT,以及特征描述和匹配的方法
  • 對象檢測和跟蹤:OpenCV 包含預訓練模型和用于對象檢測和跟蹤的函數,如 Haar 級聯檢測器、方向梯度直方圖和基于深度學習的方法
  • 相機校準:OpenCV 支持相機校準,以校正鏡頭畸變并獲取用于 3D 重建和增強現實應用程序的準確相機參數
  • 機器學習:OpenCV 與流行的機器學習框架(如 TensorFlowPyTorch )能夠很好的集成,提供了訓練和部署機器學習模型的工具,用于圖像分類、對象識別和語義分割等任務
  • 深度神經網絡:OpenCV 包含 dnn 模塊,可以與預訓練的深度學習模型一起使用,包括 AlexNetVGGResNetYOLO 等流行架構
  • GUI 和可視化:OpenCV 包含用于創建圖形用戶界面 (graphical user interface, GUI) 和使用繪圖工具、注釋可視化圖像、視頻的功能
  • 機器人和嵌入式系統:OpenCV 廣泛應用于機器人和嵌入式系統中,支持運動檢測、手勢識別和自主導航等任務

OpenCV 社區提供了大量文檔、教程、示例代碼和 OpenCV 相關主題的論壇,OpenCV 庫仍在不斷更新和改進,不斷優化并加入新的算法。OpenCV 還可以與其他流行的庫和框架集成,如 NumPySciPyMatplotlibROS (Robot Operating System),能夠利用 OpenCV 的功能與其他庫一起進行高級圖像處理和分析任務。
OpenCV 在多個領域都有廣泛應用,包括機器人、監控、增強現實、醫學成像、視頻分析等。OpenCV 提供了強大而靈活的工具集,可以處理圖像和視頻,能夠輕松實現各種計算機視覺算法,并輕松構建復雜的應用程序。

小結

在本節中,我們討論了像素、色彩空間、圖像如何使用像素和色彩空間在計算機上呈現,以及圖像、視頻幀和視頻之間的關系。

系列鏈接

OpenCV計算機視覺實戰(1)——計算機視覺簡介
OpenCV計算機視覺實戰(2)——環境搭建與OpenCV簡介

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

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

相關文章

Vite 的工作流程

Vite 的工作流程基于其創新的 “預構建 按需加載” 機制,通過利用現代瀏覽器對原生 ES 模塊的支持,顯著提升了開發效率和構建速度。以下是其核心工作流程的詳細分析: 一、開發環境工作流程 1. 啟動開發服務器 冷啟動:通過 npm …

線性DP(動態規劃)

線性DP的概念(視頻) 學習線性DP之前,請確保已經對遞推有所了解。 一、概念 1、動態規劃 不要去看網上的各種概念,什么無后效性,什么空間換時間,會越看越暈。從做題的角度去理解就好了,動態規劃…

MySQL中sql_mode的設置

■ 57版本原來配置 show variables like %sql_mode%; STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION ■ 修改配置文件 注釋掉sql_mode,并重啟,查看57版本的默認設置 ONL…

MCAL學習(1)——AutoSAR

1.了解AutoSAR及一些概念 AutoSAR是Automotive Open System Architecture ,汽車開放系統架構。 針對汽車ECU的軟件開發架構。已經是汽車電子軟件開發的標準。 OS服務:Freertos 整車廠(OEM)主要負責應用層算法 一級供應商:生產制…

Vue報錯:Cannot read properties of null (reading ‘xxx‘)

一、報錯問題 Cannot read properties of null (reading style)at patchStyle (runtime-dom.esm-bundler.js:104:22)二、錯誤排查 這類報錯一般是在已經開發好后,后面測試時突然發現的,所以不好排查錯誤原因。 三、可能原因及解決方案 v-if 導致 在 …

25G 80km雙纖BIDI光模塊:遠距傳輸的創新標桿

目錄 一、產品優勢:雙纖與BIDI的獨特價值 易天光通信25G SFP28 ZR 80KM 易天光通信25G SFP28 BIDI ZR 80KM 二、權威認證與技術突破 三、雙纖與BIDI的核心差異解析 四、應用場景:驅動多領域高效互聯 總結 在5G、云計算與數字化轉型的推動下,光…

2025-05-06 學習記錄--Python-注釋 + 打印變量 + input輸入

合抱之木,生于毫末;九層之臺,起于累土;千里之行,始于足下。💪🏻 一、注釋 ?? (一)、塊注釋 🍭 舉例: 🌰 # 打印數字 print(2025) …

基于mediapipe深度學習的眨眼檢測和計數系統python源碼

目錄 1.算法運行效果圖預覽 2.算法運行軟件版本 3.部分核心程序 4.算法理論概述 5.算法完整程序工程 1.算法運行效果圖預覽 (完整程序運行后無水印) 2.算法運行軟件版本 人工智能算法python程序運行環境安裝步驟整理_本地ai 運行 python-CSDN博客 3.部分核心程序 &…

怎樣通過API 實現python調用Chatgpt,gemini

怎樣通過API 實現python調用Chatgpt,gemini 以下為你詳細介紹如何設置和調用這些參數,以創建一個類似的 ChatCompletion 請求: 1. 安裝依賴庫 如果你使用的是 OpenAI 的 API 客戶端,需要先安裝 openai 庫。可以使用以下命令進行安裝: pip install openai2. 代碼示例 …

Linux 下MySql主從數據庫的環境搭建

測試環境:兩臺服務器,Mysql版本 8.0,linux版本:Ubuntu 20.04.3; 1.在兩臺服務器上安裝MySql; 2.選一臺作為主服務器,在主服務器上以root用戶進入Mysql,執行以下語句: …

力扣1812題解

記錄 2025.5.7 題目: 思路: 從左下角開始,棋盤的行數和列數(均從 1 開始計數)之和如果為奇數,則為白色格子,如果和為偶數,則為黑色格子。 代碼: class Solution {pu…

適合java程序員的Kafka消息中間件實戰

創作的初心: 我們在學習kafka時,都是基于大數據的開發而進行的講解,這篇文章為java程序員為核心,助力大家掌握kafka實現。 什么是kafka: 歷史: 誕生與開源(2010 - 2011 年) 2010 年&#xf…

PDF智能解析與知識挖掘:基于pdfminer.six的全棧實現

前言 在數字化信息爆炸的時代,PDF(便攜式文檔格式)作為一種通用的電子文檔標準,承載著海量的結構化與非結構化知識。然而,PDF格式的設計初衷是用于展示而非數據提取,這使得從PDF中挖掘有價值的信息成為數據…

Python爬蟲+代理IP+Header偽裝:高效采集亞馬遜數據

1. 引言 在當今大數據時代,電商平臺(如亞馬遜)的數據采集對于市場分析、競品監控和價格追蹤至關重要。然而,亞馬遜具有嚴格的反爬蟲機制,包括IP封禁、Header檢測、驗證碼挑戰等。 為了高效且穩定地采集亞馬遜數據&am…

架構思維:探討架構師的本質使命

文章目錄 軟件工程1. 軟件工程的定義與核心目標2. 軟件工程 vs. 軟件項目管理3. 軟件工程的兩大特性4. 軟件工程的關鍵活動與方法論5. 架構師在軟件工程中的職責架構師的職責和思維架構師心性修煉三大核心能力架構設計的基本準則 團隊共識“設計文檔”的統一結構框架閱讀他人代…

QT設計權限管理系統

Qt能夠簡單實現系統的權限設計 首先我們需要一個登陸界面 例如這樣 然后一級權限,可以看到所有的內容,不設置菜單欄的隱藏。 然后其他權限,根據登陸者的身份進行菜單欄不同的展示。 菜單欄的隱藏代碼如下: ui->actionuser-…

Debezium 架構詳解與實戰示例

Debezium 架構詳解與實戰示例 1. 整體架構圖 #mermaid-svg-tkAquOxA2pylXzON {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-tkAquOxA2pylXzON .error-icon{fill:#552222;}#mermaid-svg-tkAquOxA2pylXzON .error-t…

Qt天氣預報系統更新UI界面

Qt天氣預報系統更新UI界面 1、創建各個小部分列表2、定義一個更新UI函數2.1 實現更新UI界面函數 1、創建各個小部分列表 QList<QLabel *> weekList; //星期 QList<QLabel *> dateList; //日期QList<QLabel *> weatherL…

AWS MCP Servers

文章目錄 一、關于 AWS MCP Servers什么是模型上下文協議&#xff08;MCP&#xff09;以及它是如何與AWS MCP服務器協同工作的&#xff1f;為什么選擇MCP服務器&#xff1f; 二、可用 Servers核心MCP服務器AWS 文檔服務器亞馬遜 Bedrock 知識庫檢索 MCP 服務器AWS CDK MCP 服務…

python如何把pdf轉word

在Python中將PDF轉換為Word文檔&#xff08;.docx&#xff09;比反向轉換&#xff08;Word轉PDF&#xff09;更具挑戰性&#xff0c;因為PDF是固定格式&#xff0c;而Word是可編輯格式。以下是幾種可行的方法及詳細步驟&#xff1a; 方法1&#xff1a;使用 pdf2docx 庫 pdf2do…