我需要使用子矩阵上的“调整大小”功能来减少矩阵(来自图像)。
在一个循环中,我用“Ray”创建子矩阵,然后我有一个带有Ray行和Ray cols的子矩阵。
当我在子矩阵上调用Resize方法时,它只接受光线1,2,4,8的子矩阵。我需要减少任何光线的子矩阵。
这里是代码:
Mat img, result;
int ray = atoi(argv[2]);
int ptR, ptC,m=0,n=0;
img = imread(argv[1],IMREAD_COLOR);
result.create(img.size()/ray, img.type());
if(ray>=result.rows || ray >= result.cols){
cerr << "Ray too high. Break.\n";
return -1;
}
for(unsigned int i=0; i<img.rows; i+=ray){
if((img.rows-i)<ray) ptR = img.rows-i;
else ptR = ray;
for (unsigned int j=0; j<img.cols; j+=ray){
if((img.cols-j)<ray) ptC = img.cols-j;
else ptC = ray;
resize(img(Rect(j,i,ptC,ptR)), result.row(m).col(n) ,result.row(m).col(n).size());
n++;
}n=0;m++;
}
如果我用ray 5或7或6实例化程序,执行中报告的错误是
OpenCV错误:Mat,文件/用户/中的断言失败(0&lt; = _colRange.start&amp;&amp; _colRange.start&lt; = _colRange.end&amp;&amp; _colRange.end&lt; = m.cols) Maurizio / Desktop / SPM / opencv-3.1.0 / modules / core / src / matrix.cpp,第477行 在抛出'cv :: Exception'的实例后终止调用 what():/Users/Maurizio/Desktop/SPM/opencv-3.1.0/modules/core/src/matrix.cpp:477:错误:(-215)0&lt; = _colRange.start&amp;&amp; _colRange.start&lt; = _colRange.end&amp;&amp;函数Mat中的_colRange.end&lt; = m.cols
中止陷阱:6