opencv排錯總結

(1) 沒有找到 tbb_debug.dll

viewtopic.php?p=52223

在這裏面找到了解決辦法,裏面的哥們太有才,頂一下

Re: win7,vs2010,opencv2.3,運行程序,報錯“計算機丟失tbb_debug.dll”

由 xxw168 » 2011-12-04 23:28
我也遇到過。我將\opencv\build\common\tbb\ia32目錄下的tbb.dll複製改名爲tbb_debug.dll

搞定!哈哈



(2) 0x7c812afb 處未處理的異常

函數中參數類型不對。比如整型數據,傳入double型 等



(3) openCV 中像素值是什麼?

解:http://zhidao.baidu.com/question/337256461.html

對於彩色圖,每個像素點其實是用個數組表示的,我記得是按BGRA的順序

像素值,即對應像素的數值對於灰度圖像,像素值是該像素點的 亮度值對於彩色圖像,像素值由 紅 綠 藍 三個顏色的 幅度值表示 A通常不用


(4) openCV 幫助文檔問題。。

解:http://www.opencv.org.cn/index.php/Download#chm.E6.A0.BC.E5.BC.8F.E6.96.87.E6.A1.A3

之前下的ICVL 感覺很不全,好多函數都查不到,其實不然,索引時候有個技巧,比如:cvCalcHist() 函數,如果把全名

輸入則找不到,只搜索CalcHist 就可以找到,有些函數得加cv,這樣幾乎所有目前學習的函數都能找到了,非常強大。。


(5) 什麼是 HSV

解:HSV 是顏色模型的一種,H:色調 S:飽和度 V:亮度 HSV的三維表示從RGB 立方體演化而來。


(6)opencv中mask 的意思,如 cvAdd() 中 dst(I)=src1(I)+src2(I) if mask(I)!=0

解:http://blog.csdn.net/moc062066/article/details/6548450

要知道mask == NULL 和 mask(I) == 0 是兩個概念,NULL 代表不存在這個矩陣,0代表這個矩陣爲零,如果不存在則忽視mask 完全相加



(7)用cvReleaseImage() 釋放從視頻返回圖像時出現“helloOpencv.exe 中的 0x7c812afb 處未處理的異常: Microsoft C++ 異常: 內存位置 0x0011fa20 處的 cv::Exception。”


解:函數cvQueryFrame從攝像頭或者文件中抓取一幀,然後解壓並返回這一幀。這個函數僅僅是函數cvGrabFrame和函數cvRetrieveFrame在一起調用的組合。返回的圖像不可以被用戶釋放或者修改。


(8)cvShowImage() 顯示圖像爲全黑全灰。

答:用cvShowImage()輸出了未進行轉換的浮點深度的圖像,找了好長時間,在這裏找到了答案http://bbs.ednchina.com/BLOG_ARTICLE_2061059.HTM
在處理一些需要圖像相加運算的操作時,通常定義
IplImage* dst = cvCreateImage(cvGetSize(img),IPL_DEPTH_64F,img->nChannels);
當處理完成後,需要對原這個IPL_DEPTH_64F深度的圖像進行顯示的時候,就需要做一些轉換。可以用cvScale()這個函數,這個函數主要是對圖像做線性變換。如果不轉換的話,可以發現顯示的圖像是全白的。這是由於IPL_DEPTH_64F類型的圖片顯示範圍爲[0,1]。
cvMinMaxLoc(dst, &m, &M, NULL, NULL, NULL);
cvScale(dst, dst, 1.0/(M-m), 1.0*(-m)/(M-m));//圖像數據轉換到[0,1]區間
這個時候就可以正常的顯示圖像了。當需要在不同深度的圖像之間轉換時,也可以用cvScale()這個函數。這個時候的轉換,中間有個截斷處理過程。比如IPL_DEPTH_64F到IPL_DEPTH_8U,就會把300轉換到255。下面轉一段別人總結的深度顯示範圍。
測試double型:0.0--1.0之間 IPL_DEPTH_64F
測試float型:0.0--1.0之間 IPL_DEPTH_32F
測試long型:0--65535之間 IPL_DEPTH_32S
測試short int型:-32768--32767之間 IPL_DEPTH_16S
測試unsigned short int型:0--65535之間 IPL_DEPTH_16U
測試char型:-128--127之間 IPL_DEPTH_8S
測試unsigned char型:0--255之間 IPL_DEPTH_8U
這個時候如果需要保存圖像,請記住要先轉換到IPL_DEPTH_8U的深度。因爲只有8位單通道或者3通道(通道順序爲'BGR' )纔可以使用cvSaveImage保存。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章