[問題] QT及OpenCV編譯問題

作者: chuinzong (阿榮)   2019-03-28 13:57:14
開發平台(Platform): (Ex: Win10, Linux, ...)
Linux Ubumtu 16.04 QT5.5.1
編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出)
QT GCC
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
OpenCV 4.0.0
問題(Question):
在編譯過程中,若是要修改影像內的pixel值就會出現如下錯誤:
The program has unexpectedly finished.
可是將 /*pchRowData[j] = 0;*/ 註解掉,就可以解決問題。
我查詢此錯誤代碼可能會發生的情況,大多都解釋為資料沒有new的情況。
可是我這也不是要new的資料(是cv::Mat cvEdgeImg)
餵入的資料(Input):
uchar* pchRowData = NULL;
pchRowData = cvEdgeImg.ptr<uchar>(cvEdgeImg.cols);
for(int j=cvEdgeImg.rows-1 ; j>=0 ; j
作者: nh60211as   2019-03-28 14:14:00
都用opencv4了就別用那麼舊的語法,改用.at<uchar>或是抓submatrix來存取吧
作者: chuinzong (阿榮)   2019-03-28 14:27:00
由於我用cvEdgeImg.at<char>(i,j) = 255; 還是會有狀況那我用看submatrix試試看The program has unexpectedly finished..../ProjectIamge crashed
作者: nh60211as   2019-03-28 14:49:00
pchRowData = cvEdgeImg.ptr<uchar>(cvEdgeImg.cols);這一行是代表你每一個迴圈都固定抓影像的同一個row這是你要的寫法嗎?另外用.ptr應該還要先檢查這個matri是不是連續的更正,是每一個迴圈抓固定的起始點
作者: chuinzong (阿榮)   2019-03-28 15:18:00
pchRowData = cvEdgeImg.ptr<uchar>(i);已經改成i還是會有一樣狀況
作者: nh60211as   2019-03-28 15:21:00
正確的輸入方式是.at<char>(row,col),我覺得你應該先學一下opencv的語法或去看documentation,這個程式碼太難了
作者: chuinzong (阿榮)   2019-03-28 15:32:00
Ok,我知道問題在哪了!那我在看下文件,謝謝~
作者: flyfoxy (飛狐)   2019-03-28 22:10:00
j>=0;j— 表示j有可能是-1

Links booklink

Contact Us: admin [ a t ] ucptt.com