主頁 >  其他 > OpenCV影像識別技術介紹

OpenCV影像識別技術介紹

2021-12-27 08:54:06 其他

一、概述

(一)簡介

OpenCV是一個基于BSD許可(開源)發行的跨平臺計算機視覺庫,可以運行在Linux、Windows、Android和Mac OS作業系統上,它輕量級而且高效——由一系列 C 函式和少量 C++ 類構成,OpenCV用C++語言撰寫,它的主要介面也是C++語言,但是依然保留了大量的C語言介面,

在計算機視覺專案的開發中,OpenCV作為較大眾的開源庫,擁有了豐富的常用影像處理函式庫,能夠快速的實作一些影像處理和識別的任務,此外,OpenCV還提供了Java、python、cuda等的使用介面、機器學習的基礎演算法呼叫,從而使得影像處理和影像分析變得更加易于上手,讓開發人員更多的精力花在演算法的設計上,

(二)應用領域

主要包含下列應用領域:

人機互動,物體識別,影像分割,人臉識別,動作識別,運動跟蹤,機器人,運動分析,機器視覺,結構分析,汽車安全駕駛,

(三)主要功能

影像資料的操作 ( 分配、釋放、復制、設定和轉換), 影像是視頻的輸入輸出I/O (檔案與攝像頭的輸入、影像和視頻檔案輸出),

矩陣和向量的操作以及線性代數的演算法程式(矩陣積、解方程、特征值以及奇異值等),

各種動態資料結構(串列、佇列、集合、樹、圖等),

基本的數字影像處理(濾波、邊緣檢測、角點檢測、采樣與差值、色彩轉換、形態操作、直方圖、影像金字塔等),

結構分析(連接部件、輪廓處理、距離變換、各自距計算、模板匹配、Hough變換、多邊形逼近、直線擬合、橢圓擬合、Delaunay 三角劃分等),

攝像頭定標(發現與跟蹤定標模式、定標、基本矩陣估計、齊次矩陣估計、立體對應),

運動分析(光流、運動分割、跟蹤),

目標識別(特征法、隱馬爾可夫模型:HMM),

基本的GUI (影像與視頻顯示、鍵盤和滑鼠事件處理、滾動條)

二、影像識別教程

(一)安裝

1.下載程式

下載openCV安裝包官網地址:Home - OpenCV

程式目錄如下:

選擇對應環境的檔案夾,本文以java為例,java所需檔案如下:

Jar檔案為依賴包,win64位作業系統選擇x64檔案夾:

2.環境搭建

本文以IDEA開發工具為例,maven構建專案,pom管理jar包;

由于專案需要用到 opencv 的dll檔案,故要么放在java library path 中,或放在jre lib 中,windows下可放在System32目錄下,也可以在代碼中動態加載,如下:

pom引入 opencv.jar:

(二)基本流程

1.影像預處理

(1)Mat-基本影像容器

Mat 是一個類,由兩個資料部分組成:矩陣頭(包含矩陣尺寸,存盤方法,存盤地址等資訊)和一個指向存盤所有像素值的矩陣(根據所選存盤方法的不同矩陣可以是不同的維數)的指標,矩陣頭的尺寸是常數值,但矩陣本身的尺寸會依影像的不同而不同,通常比矩陣頭的尺寸大數個數量級,

轉換影像為Mat物件代碼如下:

(2)影像灰度化

在RGB模型中,如果R=G=B時,則彩色表示灰度顏色,其中R=G=B的值叫灰度值;因此,灰度影像每個像素點只需一個位元組存放灰度值(又稱強度值、亮度值),灰度范圍為0-255,一般常用的是加權平均法來求像素點的灰度值

常見的加權方法如下:
1)Gray = B ; Gray = G ; Gray = R
2)Gray = max({B , G , R})
3)Gray = (B + G + R) / 3
4)Gray = 0.072169 * B + 0.715160 * G + 0.212671 * R
5)Gray = 0.11 * B + 0.59 * G + 0.3 * R

這幾種方法中,第一為分量法,即用RGB三個分量的某一個分量作為該點的灰度值;第二種方法為最大值法,將彩色影像中的三個分量亮度的最大值作為灰度圖的灰度值;第三種方法是將彩色影像中的三分量求平均得到一個灰度圖;后兩種都屬于加權平均法,其中第四種是opencv開發庫所采用的一種求灰度值演算法;第五種為從人體生理學角度所提出的一種求灰度值演算法(人眼對綠色的敏感最高,對藍色敏感最低)

影像灰度化代碼如下:

(3)影像二值化

影像的二值化,就是將影像上的像素點的灰度值設定位0或255這兩個極點,也就是將整個影像呈現出明顯的只有黑和白的視覺效果,

常見的二值化方法為固定閥值和自適應閥值,固定閥值就是制定一個固定的數值作為分界點,大于這個閥值的像素就設為255,小于該閥值就設為0,這種方法簡單粗暴,但是效果不一定好.另外就是自適應閥值,每次根據圖片的灰度情況找合適的閥值,自適應閥值的方法有很多,這里采用了一種類似K均值的方法,就是先選擇一個值作為閥值,統計大于這個閥值的所有像素的灰度平均值和小于這個閥值的所有像素的灰度平均值,再求這兩個值的平均值作為新的閥值,重復上面的計算,直到每次更新閥值后,大于該閥值和小于該閥值的像素數目不變為止,

二值化代碼如下:

(4)影像降噪

處理掉一些干擾因素;

主要的降噪演算法

濾波類:通過設計濾波器對影像進行處理,特點是速度往往比較快,很多卷積濾波可以借助快速傅里葉變化來加速

稀疏表達類:自然圖片之所以看起來不同于隨機噪音/人造結構,是因為大家發現他們總會在某一個橫型下存在稀疏表達,而我們想排除的噪音往往無法被稀疏化,基于這個判別式模型,用稀疏性來約束自然影像,在很多逆問題里取得了拔群的效果

外部先驗:如果從有噪音的圖片本身無法找到規律,我們也可以借助其他類似但又沒有噪音的圖片,來總結圖片具有的固有屬性,這一類方法利用的外部圖片來創造先驗條件,然后用于約束需要預測的圖片,最有代表性就是混合高斯模型

聚類低秩:除了可稀疏性,低秩性也是自然圖片常見的一個特性,數學上,可稀疏表達的資料可以被認為是在Union of low-dimensional subspaces;而低秩資料則是直接存在于一個Low-dimensional subspace,這個更嚴格的限制往往也可以取得很好的降噪效果,

深度學習(Deep Learning):這類可以歸于外部先驗的子類,如果說解決逆問題的關鍵,是尋找一個好的影像約束器,那么我們為什么不用一個最好的約束器?深度學習方法的精髓,就在于通過大量的資料,學習得到一個高復雜度(多層網路結構)的圖片約束器,從而將學習外部先驗條件這一途徑推到極限,近期的很多這類作業,都是沿著這一思路,取得了非常逆天的效果,

字符分割:就是把圖片有用的部分一個個分割下來;字符分割有很多方法,但并不是每一種方法都是萬能的,我們需要根據自己的業務來調整;常見的就是投影法和連通域法

投影法:就是分析每一維上黑色像素點的個數(假設是二值化的影像),然后設定一個闕值,根據這個闕值來分割圖片

影像降噪代碼如下:

(5)影像腐蝕、膨脹

腐蝕:影像的一部磁區域與指定的核進行卷積,求核的最小值并賦值給指定區域,腐蝕可以理解為影像中高亮區域的領域縮小,

膨脹:影像的一部磁區域與指定的核進行卷積,求核的最大值并賦值給指定區域,膨脹可以理解為影像中高亮區域的領域擴大,

腐蝕、膨脹代碼如下:

2.影像識別

(1)特征值提取

為了解決圖片旋轉縮放后的匹配問題,就需要用到計算機視覺處理演算法中的特征變換匹配演算法,其思路是先找到影像中的一些“穩定點”,這些點不會因為視角的改變、光照的變化、噪音的干擾而消失,比如角點、邊緣點、暗區域的亮點以及亮區域的暗點,這樣如果兩幅圖中有相同的景物,那么穩定點就會在兩幅影像的相同景物上同時出現,這樣就能實作匹配,

特征值提取代碼如下:

效果如下:

(2)特征值比對

OpenCV 中針對特征點匹配問題已經提供了很多演算法,包括 FAST 、SIFT 、SURF 、ORB,

特征值比對代碼如下:

效果如下:

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/394095.html

標籤:其他

上一篇:風格遷移模型測驗效果

下一篇:c++ 使用Visual Studio 編譯器安裝opencv環境

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 網閘典型架構簡述

    網閘架構一般分為兩種:三主機的三系統架構網閘和雙主機的2+1架構網閘。 三主機架構分別為內端機、外端機和仲裁機。三機無論從軟體和硬體上均各自獨立。首先從硬體上來看,三機都用各自獨立的主板、記憶體及存盤設備。從軟體上來看,三機有各自獨立的作業系統。這樣能達到完全的三機獨立。對于“2+1”系統,“2”分為 ......

    uj5u.com 2020-09-10 02:00:44 more
  • 如何從xshell上傳檔案到centos linux虛擬機里

    如何從xshell上傳檔案到centos linux虛擬機里及:虛擬機CentOs下執行 yum -y install lrzsz命令,出現錯誤:鏡像無法找到軟體包 前言 一、安裝lrzsz步驟 二、上傳檔案 三、遇到的問題及解決方案 總結 前言 提示:其實很簡單,往虛擬機上安裝一個上傳檔案的工具 ......

    uj5u.com 2020-09-10 02:00:47 more
  • 一、SQLMAP入門

    一、SQLMAP入門 1、判斷是否存在注入 sqlmap.py -u 網址/id=1 id=1不可缺少。當注入點后面的引數大于兩個時。需要加雙引號, sqlmap.py -u "網址/id=1&uid=1" 2、判斷文本中的請求是否存在注入 從文本中加載http請求,SQLMAP可以從一個文本檔案中 ......

    uj5u.com 2020-09-10 02:00:50 more
  • Metasploit 簡單使用教程

    metasploit 簡單使用教程 浩先生, 2020-08-28 16:18:25 分類專欄: kail 網路安全 linux 文章標簽: linux資訊安全 編輯 著作權 metasploit 使用教程 前言 一、Metasploit是什么? 二、準備作業 三、具體步驟 前言 Msfconsole ......

    uj5u.com 2020-09-10 02:00:53 more
  • 游戲逆向之驅動層與用戶層通訊

    驅動層代碼: #pragma once #include <ntifs.h> #define add_code CTL_CODE(FILE_DEVICE_UNKNOWN,0x800,METHOD_BUFFERED,FILE_ANY_ACCESS) /* 更多游戲逆向視頻www.yxfzedu.com ......

    uj5u.com 2020-09-10 02:00:56 more
  • 北斗電力時鐘(北斗授時服務器)讓網路資料更精準

    北斗電力時鐘(北斗授時服務器)讓網路資料更精準 北斗電力時鐘(北斗授時服務器)讓網路資料更精準 京準電子科技官微——ahjzsz 近幾年,資訊技術的得了快速發展,互聯網在逐漸普及,其在人們生活和生產中都得到了廣泛應用,并且取得了不錯的應用效果。計算機網路資訊在電力系統中的應用,一方面使電力系統的運行 ......

    uj5u.com 2020-09-10 02:01:03 more
  • 【CTF】CTFHub 技能樹 彩蛋 writeup

    ?碎碎念 CTFHub:https://www.ctfhub.com/ 筆者入門CTF時時剛開始刷的是bugku的舊平臺,后來才有了CTFHub。 感覺不論是網頁UI設計,還是題目質量,賽事跟蹤,工具軟體都做得很不錯。 而且因為獨到的金幣制度的確讓人有一種想去刷題賺金幣的感覺。 個人還是非常喜歡這個 ......

    uj5u.com 2020-09-10 02:04:05 more
  • 02windows基礎操作

    我學到了一下幾點 Windows系統目錄結構與滲透的作用 常見Windows的服務詳解 Windows埠詳解 常用的Windows注冊表詳解 hacker DOS命令詳解(net user / type /md /rd/ dir /cd /net use copy、批處理 等) 利用dos命令制作 ......

    uj5u.com 2020-09-10 02:04:18 more
  • 03.Linux基礎操作

    我學到了以下幾點 01Linux系統介紹02系統安裝,密碼啊破解03Linux常用命令04LAMP 01LINUX windows: win03 8 12 16 19 配置不繁瑣 Linux:redhat,centos(紅帽社區版),Ubuntu server,suse unix:金融機構,證券,銀 ......

    uj5u.com 2020-09-10 02:04:30 more
  • 05HTML

    01HTML介紹 02頭部標簽講解03基礎標簽講解04表單標簽講解 HTML前段語言 js1.了解代碼2.根據代碼 懂得挖掘漏洞 (POST注入/XSS漏洞上傳)3.黑帽seo 白帽seo 客戶網站被黑帽植入劫持代碼如何處理4.熟悉html表單 <html><head><title>TDK標題,描述 ......

    uj5u.com 2020-09-10 02:04:36 more
最新发布
  • 2023年最新微信小程式抓包教程

    01 開門見山 隔一個月發一篇文章,不過分。 首先回顧一下《微信系結手機號資料庫被脫庫事件》,我也是第一時間得知了這個訊息,然后跟蹤了整件事情的經過。下面是這起事件的相關截圖以及近日流出的一萬條資料樣本: 個人認為這件事也沒什么,還不如關注一下之前45億快遞資料查詢渠道疑似在近日復活的訊息。 訊息是 ......

    uj5u.com 2023-04-20 08:48:24 more
  • web3 產品介紹:metamask 錢包 使用最多的瀏覽器插件錢包

    Metamask錢包是一種基于區塊鏈技術的數字貨幣錢包,它允許用戶在安全、便捷的環境下管理自己的加密資產。Metamask錢包是以太坊生態系統中最流行的錢包之一,它具有易于使用、安全性高和功能強大等優點。 本文將詳細介紹Metamask錢包的功能和使用方法。 一、 Metamask錢包的功能 數字資 ......

    uj5u.com 2023-04-20 08:47:46 more
  • vulnhub_Earth

    前言 靶機地址->>>vulnhub_Earth 攻擊機ip:192.168.20.121 靶機ip:192.168.20.122 參考文章 https://www.cnblogs.com/Jing-X/archive/2022/04/03/16097695.html https://www.cnb ......

    uj5u.com 2023-04-20 07:46:20 more
  • 從4k到42k,軟體測驗工程師的漲薪史,給我看哭了

    清明節一過,盲猜大家已經無心上班,在數著日子準備過五一,但一想到銀行卡里的余額……瞬間心情就不美麗了。最近,2023年高校畢業生就業調查顯示,本科畢業月平均起薪為5825元。調查一出,便有很多同學表示自己又被平均了。看著這一資料,不免讓人想到前不久中國青年報的一項調查:近六成大學生認為畢業10年內會 ......

    uj5u.com 2023-04-20 07:44:00 more
  • 最新版本 Stable Diffusion 開源 AI 繪畫工具之中文自動提詞篇

    🎈 標簽生成器 由于輸入正向提示詞 prompt 和反向提示詞 negative prompt 都是使用英文,所以對學習母語的我們非常不友好 使用網址:https://tinygeeker.github.io/p/ai-prompt-generator 這個網址是為了讓大家在使用 AI 繪畫的時候 ......

    uj5u.com 2023-04-20 07:43:36 more
  • 漫談前端自動化測驗演進之路及測驗工具分析

    隨著前端技術的不斷發展和應用程式的日益復雜,前端自動化測驗也在不斷演進。隨著 Web 應用程式變得越來越復雜,自動化測驗的需求也越來越高。如今,自動化測驗已經成為 Web 應用程式開發程序中不可或缺的一部分,它們可以幫助開發人員更快地發現和修復錯誤,提高應用程式的性能和可靠性。 ......

    uj5u.com 2023-04-20 07:43:16 more
  • CANN開發實踐:4個DVPP記憶體問題的典型案例解讀

    摘要:由于DVPP媒體資料處理功能對存放輸入、輸出資料的記憶體有更高的要求(例如,記憶體首地址128位元組對齊),因此需呼叫專用的記憶體申請介面,那么本期就分享幾個關于DVPP記憶體問題的典型案例,并給出原因分析及解決方法。 本文分享自華為云社區《FAQ_DVPP記憶體問題案例》,作者:昇騰CANN。 DVPP ......

    uj5u.com 2023-04-20 07:43:03 more
  • msf學習

    msf學習 以kali自帶的msf為例 一、msf核心模塊與功能 msf模塊都放在/usr/share/metasploit-framework/modules目錄下 1、auxiliary 輔助模塊,輔助滲透(埠掃描、登錄密碼爆破、漏洞驗證等) 2、encoders 編碼器模塊,主要包含各種編碼 ......

    uj5u.com 2023-04-20 07:42:59 more
  • Halcon軟體安裝與界面簡介

    1. 下載Halcon17版本到到本地 2. 雙擊安裝包后 3. 步驟如下 1.2 Halcon軟體安裝 界面分為四大塊 1. Halcon的五個助手 1) 影像采集助手:與相機連接,設定相機引數,采集影像 2) 標定助手:九點標定或是其它的標定,生成標定檔案及內參外參,可以將像素單位轉換為長度單位 ......

    uj5u.com 2023-04-20 07:42:17 more
  • 在MacOS下使用Unity3D開發游戲

    第一次發博客,先發一下我的游戲開發環境吧。 去年2月份買了一臺MacBookPro2021 M1pro(以下簡稱mbp),這一年來一直在用mbp開發游戲。我大致分享一下我的開發工具以及使用體驗。 1、Unity 官網鏈接: https://unity.cn/releases 我一般使用的Apple ......

    uj5u.com 2023-04-20 07:40:19 more