我有一个问题,因为我在标题处解释。我想将2D填充的int **(动态)数组分配给MAT对象,然后在屏幕上显示它。我已经解释了许多问题,谷歌并没有得到任何结果。任何帮助将不胜感激。 这是我的代码无效。
int** resultMatrix;
#define SIZE 800
//Some array process (Assign,Erosion etc..)
Mat A = Mat(SIZE, SIZE, CV_32S, &resultMatrix,2);
namedWindow( "Display window", CV_WINDOW_AUTOSIZE );
imshow( "Display window", A );
此代码块始终显示黑屏。我也将尺寸更改为10并将矩阵打印到屏幕为1和0,这是正确的。(OpenCV版本是2.4.5)
此外,我还有wait(0)
代码,该代码完全在此代码的末尾运行。
答案 0 :(得分:0)
如果我没错,我过去也遇到过类似的问题。尝试在waitKey(1);
之后添加一行imshow( "Display window", A );
我觉得它对我有用。
答案 1 :(得分:0)
尝试使用CV_8U作为类型参数。
Mat A = Mat(SIZE,SIZE,CV_8U,& resultMatrix);
答案 2 :(得分:0)
OpenCv doc说imshow在显示之前将值除以255。您必须缩放数据,使其在该分割后不为0。真白色应为255 * 255