日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

OpenCV_01 简介+无版权安装+模块分析

發布時間:2024/7/5 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 OpenCV_01 简介+无版权安装+模块分析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?OpenCV是應用廣泛的開源圖像處理庫,我們以其為基礎,介紹相關的圖像處理方法:包括基本的圖像處理方法:幾何變換,形態學變換,圖像平滑,直方圖操作,模板匹配,霍夫變換等;特征提取和描述方法:理解角點特征,Harris和Shi-Tomas算法,SIFT/SURF算法,Fast算法,ORB算法等;還有OpenCV在視頻操作中的應用,最后的案例是使用OpenCV進行人臉檢測。

1.1 圖像是什么

圖像是人類視覺的基礎,是自然景物的客觀反映,是人類認識世界和人類本身的重要源泉。“圖”是物體反射或透射光的分布,“像“是人的視覺系統所接受的圖在人腦中所形版的印象或認識,照片、繪畫、剪貼畫、地圖、書法作品、手寫漢學、傳真、衛星云圖、影視畫面、X光片、腦電圖、心電圖等都是圖像。—姚敏. 數字圖像處理:機械工業出版社,2014年。

1.1.1?模擬圖像和數字圖像

圖像起源于1826年前后法國科學家Joseph Nicéphore Niépce發明的第一張可永久保存的照片,屬于模擬圖像。模擬圖像又稱連續圖像,它通過某種物理量(如光、電等)的強弱變化來記錄圖像亮度信息,所以是連續變換的。模擬信號的特點是容易受干擾,如今已經基本全面被數字圖像替代。

在第一次世界大戰后,1921年美國科學家發明了Bartlane System,并從倫敦傳到紐約傳輸了第一幅數字圖像,其亮度用離散數值表示,將圖片編碼成5個灰度級,如下圖所示,通過海底電纜進行傳輸。在發送端圖片被編碼并使用打孔帶記錄,通過系統傳輸后在接收方使用特殊的打印機恢復成圖像。

1950年左右,計算機被發明,數字圖像處理學科正式誕生。

模擬圖像和數字圖像的對比,我們可以看一下:

1.2 數字圖像的表示

1.2.1 位數

計算機采用0/1編碼的系統,數字圖像也是利用0/1來記錄信息,我們平常接觸的圖像都是8位數圖像,包含0~255灰度,其中0,代表最黑,1,表示最白。

?人眼對灰度更敏感一些,在16位到32位之間。

1.2.2 圖像的分類

二值圖像

一幅二值圖像的二維矩陣僅由0、1兩個值構成,“0”代表黑色,“1”代白色。由于每一像素(矩陣中每一元素)取值僅有0、1兩種可能,所以計算機中二值圖像的數據類型通常為1個二進制位。二值圖像通常用于文字、線條圖的掃描識別(OCR)和掩膜圖像的存儲。

灰度圖

每個像素只有一個采樣顏色的圖像,這類圖像通常顯示為從最暗黑色到最亮的白色的灰度,盡管理論上這個采樣可以任何顏色的不同深淺,甚至可以是不同亮度上的不同顏色。灰度圖像與黑白圖像不同,在計算機圖像領域中黑白圖像只有黑色與白色兩種顏色;但是,灰度圖像在黑色與白色之間還有許多級的顏色深度。灰度圖像經常是在單個電磁波頻譜如可見光內測量每個像素的亮度得到的,用于顯示的灰度圖像通常用每個采樣像素8位的非線性尺度來保存,這樣可以有256級灰度(如果用16位,則有65536級)。

彩色圖

每個像素通常是由紅(R)、綠(G)、藍(B)三個分量來表示的,分量介于(0,255)。RGB圖像與索引圖像一樣都可以用來表示彩色圖像。與索引圖像一樣,它分別用紅(R)、綠(G)、藍(B)三原色的組合來表示每個像素的顏色。但與索引圖像不同的是,RGB圖像每一個像素的顏色值(由RGB三原色表示)直接存放在圖像矩陣中,由于每一像素的顏色需由R、G、B三個分量來表示,M、N分別表示圖像的行列數,三個M x N的二維矩陣分別表示各個像素的R、G、B三個顏色分量。RGB圖像的數據類型一般為8位無符號整形,通常用于表示和存放真彩色圖像。

2.1 OpenCV簡介

OpenCV是一款由Intel公司俄羅斯團隊發起并參與和維護的一個計算機視覺處理開源軟件庫,支持與計算機視覺和機器學習相關的眾多算法,并且正在日益擴展。

OpenCV的優勢:

  • 編程語言

    OpenCV基于C++實現,同時提供python, Ruby, Matlab等語言的接口。OpenCV-Python是OpenCV的Python API,結合了OpenCV C++ API和Python語言的最佳特性。

  • 跨平臺

    可以在不同的系統平臺上使用,包括Windows,Linux,OS X,Android和iOS。基于CUDA和OpenCL的高速GPU操作接口也在積極開發中

  • 活躍的開發團隊

  • 豐富的API

    完善的傳統計算機視覺算法,涵蓋主流的機器學習算法,同時添加了對深度學習的支持。

  • 2.2 OpenCV-Python

    OpenCV-Python是一個Python綁定庫,旨在解決計算機視覺問題。

    Python是一種由Guido van Rossum開發的通用編程語言,它很快就變得非常流行,主要是因為它的簡單性和代碼可讀性。它使程序員能夠用更少的代碼行表達思想,而不會降低可讀性。

    與C / C++等語言相比,Python速度較慢。也就是說,Python可以使用C / C++輕松擴展,這使我們可以在C / C++中編寫計算密集型代碼,并創建可用作Python模塊的Python包裝器。這給我們帶來了兩個好處:首先,代碼與原始C / C++代碼一樣快(因為它是在后臺工作的實際C++代碼),其次,在Python中編寫代碼比使用C / C++更容易。OpenCV-Python是原始OpenCV C++實現的Python包裝器。

    OpenCV-Python使用Numpy,這是一個高度優化的數據庫操作庫,具有MATLAB風格的語法。所有OpenCV數組結構都轉換為Numpy數組。這也使得與使用Numpy的其他庫(如SciPy和Matplotlib)集成更容易。

    2.3 OpenCV部署方法

    安裝OpenCV之前需要先安裝numpy, matplotlib。

    創建Python虛擬環境cv, 在cv中安裝即可。

    先安裝OpenCV-Python, 由于一些經典的算法被申請了版權,新版本有很大的限制,所以選用3.4.3以下的版本

    pip install opencv-python==3.4.2.17

    現在可以測試下是否安裝成功,運行以下代碼無報錯則說明安裝成功。

    import cv2 # 讀一個圖片并進行顯示(圖片路徑需自己指定) lena=cv2.imread("opencv.jpg") cv2.imshow("image",lena) cv2.waitKey(0)

    如果我們要利用SIFT和SURF等進行特征提取時,還需要安裝:

    pip install opencv-contrib-python==3.4.2.17

    2.4?OpenCV的模塊

    下圖列出了OpenCV中包含的各個模塊:

    其中core、highgui、imgproc是最基礎的模塊,該課程主要是圍繞這幾個模塊展開的,分別介紹如下:

    • core模塊實現了最核心的數據結構及其基本運算,如繪圖函數、數組操作相關函數等。
    • highgui模塊實現了視頻與圖像的讀取、顯示、存儲等接口。
    • imgproc模塊實現了圖像處理的基礎方法,包括圖像濾波、圖像的幾何變換、平滑、閾值分割、形態學處理、邊緣檢測、目標檢測、運動分析和對象跟蹤等。

    對于圖像處理其他更高層次的方向及應用,OpenCV也有相關的模塊實現

    • features2d模塊用于提取圖像特征以及特征匹配,nonfree模塊實現了一些專利算法,如sift特征。
    • objdetect模塊實現了一些目標檢測的功能,經典的基于Haar、LBP特征的人臉檢測,基于HOG的行人、汽車等目標檢測,分類器使用Cascade Classification(級聯分類)和Latent SVM等。
    • stitching模塊實現了圖像拼接功能。
    • FLANN模塊(Fast Library for Approximate Nearest Neighbors),包含快速近似最近鄰搜索FLANN 和聚類Clustering算法。
    • ml模塊機器學習模塊(SVM,決策樹,Boosting等等)。
    • photo模塊包含圖像修復和圖像去噪兩部分。
    • video模塊針對視頻處理,如背景分離,前景檢測、對象跟蹤等。
    • calib3d模塊即Calibration(校準)3D,這個模塊主要是相機校準和三維重建相關的內容。包含了基本的多視角幾何算法,單個立體攝像頭標定,物體姿態估計,立體相似性算法,3D信息的重建等等。
    • G-API模塊包含超高效的圖像處理pipeline引擎

    總結

  • OpenCV是計算機視覺的開源庫

    優勢:

    • 支持多種編程語言

    • 跨平臺

    • 活躍的開發團隊

    • 豐富的API

  • 圖像是什么

    圖:物體反射或透射光的分布

    像:人的視覺系統所接受的圖在人腦中所形版的印象或認識

  • 模擬圖像和數字圖像

    模擬圖像:連續存儲的數據,

    數字圖像:分級存儲的數據

  • 數字圖像

    位數:圖像的表示,常見的就是8位

    分類:二值圖像,灰度圖像和彩色圖像

  • OpenCV 的模塊

    core:最核心的數據結構

    highgui:視頻與圖像的讀取、顯示、存儲

    imgproc:圖像處理的基礎方法

    features2d:圖像特征以及特征匹配

  • 總結

    以上是生活随笔為你收集整理的OpenCV_01 简介+无版权安装+模块分析的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。