我正在尝试编写一个带宽度,高度和CvType的函数,并从中创建一个棋盘图案。我当前的实现给了我错误无效参数传递给C运行时函数。
Mat MainWindow::makeCheckMat(int width, int height, int type){
int checkSize = 8;
Mat checkMat(width, height, type);
uchar color=0;
for(int i = 0 ; i < width ; i += checkSize ){
color=~color;
for(int j = 0 ; j < height ; j += checkSize ){
Point topLeft(i, j);
int bottomRightX = i + checkSize;
int bottomRightY = j + checkSize;
if ( bottomRightX >= width ){
bottomRightX = width - 1;
}
if ( bottomRightY >= height ){
bottomRightY = height - 1;
}
Point bottomRight(bottomRightX, bottomRightY);
//THE CODE BREAKS HERE
Mat ROI = checkMat( Rect(topLeft, bottomRight) );
ROI.setTo(Scalar::all(color));
color=~color;
}
}
return checkMat;
这是在代码中断之前// CODE BREAKS HERE位置打印的所有值的日志...
width: 799
height: 801
i: 0
j: 792
bottomRightX: 8
bottomRightY: 800
Invalid parameter passed to C runtime function.
Invalid parameter passed to C runtime function.