在执行C++ imshow代码是出现 如下错误:
第一次类似报错 : 另一个报错博文中 中 执行imshow函数时的报错
第二次该类报错:
vector<Mat> channels;
split(ycbr, channels);
Lu = channels.at(0);
Cr = channels.at(1);
Cb = channels.at(2);
alpha = channels.at(3);
imshow("Lu", Lu);
//waitKey(600);
Unhandled exception at 0x00007FFE7BFD8A5C in wb.exe: Microsoft C++ exception: std::out_of_range at memory location 0x000000C38835CD40.
Mat ycbr = Mat::zeros(row, col, CV_8UC4);
split(ycbr, channels);
原因: 检查channels的vector向量尺寸,发现 size == 3, 虽然ycbr定义时候定义为 CV_8UC4,是4通道,但是由split函数进行通道分割后,只产生了三个channel。 因此,出现
alpha = channels.at(3); 导致报错哦~~~~
</pre><p></p><p><span style="font-size:18px"><img src="https://img-blog.youkuaiyun.com/20161013102228843?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" /></span></p><p></p><p><img src="https://img-blog.youkuaiyun.com/20161013102243796?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast" alt="" /></p><p></p><p><span style="font-size:18px">解决方案:</span></p><p><span style="font-size:18px"></span></p><p><span style="font-size:18px"></span><pre name="code" class="cpp">//alpha = channels.at(3); // 问题所在
第三次出现类似报错:
vector<int> Ciny,Ciny2;
sortIdx(Ciny,Ciny2,SORT_DESCENDING);
报错如下图:
报错具体原因:
sortIdx() 输入参数 mat 是可以的 ,如: http://blog.youkuaiyun.com/qing101hua/article/details/52817373 中第一个示例
但是vector 不行
解决:暂无
第四次报错:
Rect rect(tst.rows-10, tst.cols - 10, 3, 8);
cout << "rect : " << rect << endl;
Mat roiTst = tst(rect);