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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

OpenCV学习笔记(十一)(十二)(十三)(十四)(十五)

發布時間:2025/3/21 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 OpenCV学习笔记(十一)(十二)(十三)(十四)(十五) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

OpenCV學習筆記(十一)——談談像素的類型和對Templates的限制使用

Templates是c++的一個很強大的特征,可以是數據結構更加安全高效。但也會增加編譯時間和代碼的長度,當函數被頻繁調用的時候便步那么高效,所以在目前的OpenCV版本不推薦過多的使用templates。矩陣元素可以是如下類型中的一種:

? 8-bit unsigned integer (uchar)
? 8-bit signed integer (schar)
? 16-bit unsigned integer (ushort)
? 16-bit signed integer (short)
? 32-bit signed integer (int)
? 32-bit ?oating-point number (?oat)
? 64-bit ?oating-point number (double)

對于這些數據類型又定義了如下的枚舉變量:

[cpp]?view plain?copy
  • enum?{?CV_8U=0,?CV_8S=1,?CV_16U=2,?CV_16S=3,?CV_32S=4,?CV_32F=5,?CV_64F=6?};??

  • [cpp]?view plain?copy
  • CV_32FC1?==?CV_32F;??
  • CV_32FC2?==?CV_32FC(2)?==?CV_MAKETYPE(CV_32F,?2);??
  • CV_MAKETYPE(depth,?n)?==?((x&7)<<3)?+?(n-1); ?


  • OpenCV學習筆記(十二)——隨機數產生器RNG

    用OpenCV做算法的朋友們肯定為隨機數煩惱過,新版本一直支持隨機數產生器啦,而且還繼續支持之前版本的c格式的函數,不過與時俱進,我這里介紹C++的RNG類。它可以壓縮一個64位的i整數并可以得到scalar和array的隨機數。目前的版本支持均勻分布隨機數和Gaussian分布隨機數。隨機數的產生采用的是Multiply-With-Carry算法和Ziggurat算法。

    其構造函數的初始化可以傳入一個64位的整型參數作為隨機數產生器的初值。next可以取出下一個隨機數,uniform函數可以返回指定范圍的隨機數,gaussian函數返回一個高斯隨機數,fill則用隨機數填充矩陣。

    這里介紹一個uniform的使用事項,就是比如利用它產生0~1的隨機數的問題,具體代碼如下:

    [cpp]?view plain?copy
  • RNG?rng;??
  • //?always?produces?0??
  • double?a?=?rng.uniform(0,?1);??
  • //?produces?double?from?[0,?1)??
  • double?a1?=?rng.uniform((double)0,?(double)1);??
  • //?produces?float?from?[0,?1)??
  • double?b?=?rng.uniform(0.f,?1.f);??
  • //?produces?double?from?[0,?1)??
  • double?c?=?rng.uniform(0.,?1.);??
  • //?may?cause?compiler?error?because?of?ambiguity:??
  • //?RNG::uniform(0,?(int)0.999999)??or?RNG::uniform((double)0,?0.99999)???
  • double?d?=?rng.uniform(0,?0.999999);??

  • 就是不能寫成rng.uniform( 0 , 1),因為輸入為int型參數,會調用uniform(int,int),只能產生0。請大家注意使用^_^

    還有一些隨機數相關的函數,比如randu可以產生一個均勻分布的隨機數或者矩陣,randn可以產生一個正態分布的隨機數,randShuffle可以隨機打亂矩陣元素

    再簡單介紹一下c版本的隨機數產生器的相關函數,有cvRNG、cvRandArr、cvRandInt、cvRandReal



    OpenCV學習筆記(十三)——模板匹配

    尋找一幅圖像的匹配的模板,可以在一段視頻里尋找出我們感興趣的東西,比如條形碼的識別就可能需要這樣類似的一個工作提取出條形碼區域(當然這樣的方法并不魯棒)。而OpenCV已經為我們集成好了相關的功能。函數為matchTemplate

    所謂模板匹配就是在一幅圖像中尋找和模板圖像(patch)最相似的區域。該函數的功能為,在輸入源圖像Source image(I)中滑動框,尋找各個位置與模板圖像Template image(T)的相似度,并將結果保存在結果矩陣result matrix(R)中。該矩陣的每一個點的亮度表示與模板T的匹配程度。然后可以通過函數minMaxLoc定位矩陣R中的最大值(該函數也可以確定最小值)。

    匹配的方法有:

    CV_TM_SQDIFF 平方差匹配法,最好的匹配為0,值越大匹配越差

    CV_TM_SQDIFF_NORMED 歸一化平方差匹配法

    CV_TM_CCORR 相關匹配法,采用乘法操作,數值越大表明匹配越好

    CV_TM_CCORR_NORMED 歸一化相關匹配法

    CV_TM_CCOEFF 相關系數匹配法,最好的匹配為1,-1表示最差的匹配

    CV_TM_CCOEFF_NORMED 歸一化相關系數匹配法

    前面兩種方法為越小的值表示越匹配,后四種方法值越大越匹配。

    其實模板匹配的使用和直方圖反向投影calcBackProject函數很像,只是直方圖反向投影對比的是直方圖,而模板匹配對比的是圖像的像素值,相比較而言,直方圖反向投影的匹配魯棒性更好。

    總結這個函數,感覺功能不是很強大,應用不是很廣,因為只能在圖像中搜索出指定的模板,如果模板是從待搜索目標中截取出來的,效果會很好,如果模板不是待搜素圖像的一部分,效果就差的多了,所以該函數的使用還是有很大的局限性。



    OpenCV學習筆記(十四)——圖像結構分析與形狀描述ImgProc

    OpenCV支持大量的輪廓、邊緣、邊界的相關函數,相應的函數有moments、HuMoments、findContours、drawContours、approxPolyDP、arcLength、boundingRect、contourArea、convexHull、fitEllipse、fitLine、isContourConvex、minAreaRect、minEnclosingCircle、mathcShapes、pointPolygonTest。還有一些c版本的針對老版本的數據結構的函數比如cvApproxChains、cvConvexityDefects。這里先介紹一些我用過的函數,以后用到再陸續補充。

    OpenCV里支持很多邊緣提取的辦法,可是如何在一幅圖像里得到輪廓區域的參數呢,這就需要用到findContours函數,這個函數的原型為:

    [cpp]?view plain?copy
  • //C++:???
  • void?findContours(InputOutputArray?image,?OutputArrayOfArrays?contours,?OutputArray?hierarchy,?int?mode,?int?method,?Point?offset=Point())??
  • void?findContours(InputOutputArray?image,?OutputArrayOfArrays?contours,?int?mode,?int?method,?Point?offset=Point())??

  • 這里介紹下該函數的各個參數:

    輸入圖像image必須為一個2值單通道圖像

    contours參數為檢測的輪廓數組,每一個輪廓用一個point類型的vector表示

    hiararchy參數和輪廓個數相同,每個輪廓contours[ i ]對應4個hierarchy元素hierarchy[ i ][ 0 ] ~hierarchy[ i ][ 3 ],分別表示后一個輪廓、前一個輪廓、父輪廓、內嵌輪廓的索引編號,如果沒有對應項,該值設置為負數。

    mode表示輪廓的檢索模式

    CV_RETR_EXTERNAL表示只檢測外輪廓

    CV_RETR_LIST檢測的輪廓不建立等級關系

    CV_RETR_CCOMP建立兩個等級的輪廓,上面的一層為外邊界,里面的一層為內孔的邊界信息。如果內孔內還有一個連通物體,這個物體的邊界也在頂層。

    CV_RETR_TREE建立一個等級樹結構的輪廓。具體參考contours.c這個demo

    method為輪廓的近似辦法

    CV_CHAIN_APPROX_NONE存儲所有的輪廓點,相鄰的兩個點的像素位置差不超過1,即max(abs(x1-x2),abs(y2-y1))==1

    CV_CHAIN_APPROX_SIMPLE壓縮水平方向,垂直方向,對角線方向的元素,只保留該方向的終點坐標,例如一個矩形輪廓只需4個點來保存輪廓信息

    CV_CHAIN_APPROX_TC89_L1,CV_CHAIN_APPROX_TC89_KCOS使用teh-Chinl chain 近似算法

    offset表示代表輪廓點的偏移量,可以設置為任意值。對ROI圖像中找出的輪廓,并要在整個圖像中進行分析時,這個參數還是很有用的。

    具體應用參考sample文件夾下面的squares.cpp這個demo

    findContours后會對輸入的2值圖像改變,所以如果不想改變該2值圖像,需創建新mat來存放,findContours后的輪廓信息contours可能過于復雜不平滑,可以用approxPolyDP函數對該多邊形曲線做適當近似

    contourArea函數可以得到當前輪廓包含區域的大小,方便輪廓的篩選

    findContours經常與drawContours配合使用,用來將輪廓繪制出來。其中第一個參數image表示目標圖像,第二個參數contours表示輸入的輪廓組,每一組輪廓由點vector構成,第三個參數contourIdx指明畫第幾個輪廓,如果該參數為負值,則畫全部輪廓,第四個參數color為輪廓的顏色,第五個參數thickness為輪廓的線寬,如果為負值或CV_FILLED表示填充輪廓內部,第六個參數lineType為線型,第七個參數為輪廓結構信息,第八個參數為maxLevel

    得到了復雜輪廓往往不適合特征的檢測,這里再介紹一個點集凸包絡的提取函數convexHull,輸入參數就可以是contours組中的一個輪廓,返回外凸包絡的點集

    還可以得到輪廓的外包絡矩形,使用函數boundingRect,如果想得到旋轉的外包絡矩形,使用函數minAreaRect,返回值為RotatedRect;也可以得到輪廓的外包絡圓,對應的函數為minEnclosingCircle;想得到輪廓的外包絡橢圓,對應的函數為fitEllipse,返回值也是RotatedRect,可以用ellipse函數畫出對應的橢圓

    如果想根據多邊形的輪廓信息得到多邊形的多階矩,可以使用類moments,這個類可以得到多邊形和光柵形狀的3階以內的所有矩,類內有變量m00,m10,m01,m20,m11,m02,m30,m21,m12,m03,比如多邊形的質心為 x = m10 / m00,y = m01 / m00。

    如果想獲得一點與多邊形封閉輪廓的信息,可以調用pointPolygonTest函數,這個函數返回值為該點距離輪廓最近邊界的距離,為正值為在輪廓內部,負值為在輪廓外部,0表示在邊界上。



    OpenCV學習筆記(十五)——攝像機的標定和3D重建calib3D


    先簡單回顧一下計算機視覺的知識。這里研究生的攝像機模型都是針孔攝像機,攝像機的標定問題是CV領域的一個入門級的問題,初學攝像機標定時會被各種坐標系弄暈,這里再介紹一下,常提到的坐標系有四個:世界坐標系(Ow,以空間一點為原點)、攝像機坐標系(Oc以小孔即光心為原點)、圖像物理坐標系(O1以像平面中心為原點)、圖像像素坐標系(O以像平面左下角為原點)。這樣再看相關資料的時候就不會混了吧,這里再介紹一篇張正友的攝像機定標辦法的相關資料http://beidou841026.blog.163.com/blog/static/4629535201021731344572/
    其參數分為內參數和外參數:內參數是攝像機坐標系和理想坐標系之間的關系(5個內參數,分別為α、β、u0、v0、θ);外參數表示攝像機在世界坐標系里的位置和方向(6個外參數,3個表示旋轉R的角度,3個表示平移t)。

    利用calibrateCamera函數可以得到這些內外參數,而calibrationMatrixValues可以得到攝像機投影透視方程的投影矩陣,composeRT可以合并兩個旋轉平移變換,computeCorrespondEpilines計算其他圖像的相應epilines,convertPointsToHomogeneous把點從歐式空間轉換到齊次空間,convertPointsFromHomogeneous把點從齊次空間變換到歐式空間,而函數convertPointsHomogeneous把上述兩個函數功能綜合到一起了,decomposeProjectionMatrix可以將矩陣分解,drawChessboardCorners獲得檢測棋盤的角,findChessboardCorners獲得棋盤的內角點位置,findCirclesGrid得到圓圈光柵的中心,solvePnP實現物體位置的3維坐標和2維坐標之間的轉換,solvePnPRansac利用RANSAC實現上述功能,findFundamentalMat計算兩幅圖像關聯點的基礎矩陣,findHomography找出兩個平面的透視變換,estimateAffine3D計算兩個3維點集的理想仿射變換,filterSpeckles可以過濾不同塊的小斑點,getOptimalNewCameraMatrix得到自由比例參數的新攝像機矩陣,initCameraMatrix2D得到3D到2D的初始化的攝像機矩陣,matMulDeriv計算矩陣的偏導數,projectPoints將3D坐標投影到圖像平面上,reprojectImageTo3D根據一組差異圖像重建3D空間,RQDecomp3x3計算3x3矩陣的RQ分解,Rodrigues實現旋轉矩陣和旋轉向量之間的轉換,steroCalibrate校準立體攝像機,steroRectify是對校準過的攝像機計算修正變換,stereoRectifyUncalibrated是對未校準過的攝像機計算修正變換

    還包括了BM塊匹配算法類StereoBM、SGBM塊匹配算法類StereoSGBM類


    from: http://blog.csdn.net/yang_xian521/article/category/910716

    《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀

    總結

    以上是生活随笔為你收集整理的OpenCV学习笔记(十一)(十二)(十三)(十四)(十五)的全部內容,希望文章能夠幫你解決所遇到的問題。

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

    主站蜘蛛池模板: 黄色影音 | 黄色片hd | 狠狠涩 | 激情视频免费在线观看 | 亚洲成人自拍视频 | 手机天堂网 | 女同av在线播放 | 日韩视频免费观看高清 | 中国美女一级片 | 怡红院av亚洲一区二区三区h | av片在线观看 | 粉嫩av懂色av蜜臀av分享 | 国产精品一区二区欧美 | 久久精品一区二区三区黑人印度 | 国产免费一区二区三区在线播放 | 91丨porny丨海角社区 | 蜜臀视频网站 | 国产精品久久久久免费 | 伊伊综合网 | 成人高清视频在线观看 | 亚洲天堂偷拍 | 国产在线97| 国产一级片一区 | 激情欧美一区 | 色婷婷中文 | 美国黄色a级片 | 天天天天色 | 粉嫩av蜜桃av蜜臀av | 少妇高潮毛片色欲ava片 | avtt亚洲| 久久久69 | xxx国产| 国产鲁鲁视频在线观看特色 | 国产视频首页 | 伊人久久久 | 国产日产精品一区二区三区 | 思思99re| 韩国精品一区 | 亚洲永久无码精品 | 中文字幕一区二区三区精彩视频 | 欧美一级二级视频 | 日韩簧片| 影音先锋91| 播放黄色一级片 | 国产日韩视频在线 | 久久av无码精品人妻出轨 | 97色资源| 无码人妻精品中文字幕 | 91精品国产高清 | 天天摸夜夜添狠狠添婷婷 | 纯爱无遮挡h肉动漫在线播放 | 中文字幕人成乱码熟女香港 | 日本美女裸体视频 | 欧美成人久久 | 久久伊人一区二区 | 好爽…又高潮了毛片免费看 | 亚洲区欧美区 | 国产精品自拍合集 | 久久影院午夜理论片无码 | 黄色网页免费在线观看 | 欧美,日韩,国产精品免费观看 | 插插宗合网 | 91黄色大片 | www.香蕉网 | 少妇精品视频一区二区 | 污动漫网站 | 日本熟女一区二区 | 婷婷伊人五月天 | 国产精品国产馆在线真实露脸 | 三上悠亚在线一区二区 | 一区国产精品 | 欧美蜜桃视频 | 日本精品免费在线观看 | 国产一级在线播放 | 在线电影一区二区三区 | 亚洲欧美日韩另类 | 国产精品无码一本二本三本色 | 国产精品久久久久久 | av网址在线播放 | 人体裸体bbb欣赏 | 在线免费av观看 | 精品久久毛片 | 亚洲综合色站 | 国产精品VideoSex性欧美 | 亚洲一区二区免费在线观看 | 亚洲av最新在线网址 | 婷婷中文字幕在线 | 黄色网页在线看 | 国产主播喷水 | 欧美一区二区最爽乱淫视频免费看 | 成人福利在线 | 国产欧美一区二区在线 | 亚洲天天在线 | 免费毛片视频 | 婷婷成人av | 亚洲人人插 | 久久久久久久久久一级 | 日韩中文字幕综合 | 色眯眯网|