[问题] 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