什么原因导致此错误?
OpenCV:终止处理程序被调用!最后一个OpenCV错误是: OpenCV(4.0.1)错误:断言失败(m.dims <= 2)在 cv :: FormattedImpl :: FormattedImpl,文件c:\ build \ master_winpack- 构建-win64-vc15 \ opencv \ modules \ core \ src \ out.cpp,第87行
#include <iostream>
#include <opencv2/opencv.hpp>
using namespace cv;
using namespace std;
void main()
{
int ordo[3] = { 2, 2, 2 };
Mat obj(3, ordo, CV_8UC1, Scalar::all(0));
cout << obj << endl;
waitKey(0);
}
答案 0 :(得分:1)
此错误在此行:
cout << obj << endl;
OpenCV,将仅尝试输出2D图像(如果3D具有多个通道,则3D可能太难了)。
可能的解决方法是:
int ordo[3] = { 2, 2, 2 };
cv::Mat obj(2, 2, CV_8UC2, cv::Scalar::all(0));
std::cout << obj << std::endl;
允许并打印以下内容:
[ 0, 0, 0, 0;
0, 0, 0, 0]
前2个数字是第一个“像素”。您可以像执行以下操作轻松访问x,y,z坐标:
// obj.at<cv::Vec2b>(y, x)[z] = uchar value
obj.at<cv::Vec2b>(1, 0)[0] = 255;
将打印出以下内容:
[ 0, 0, 0, 0;
255, 0, 0, 0]
另一种可能性是创建一个自制的打印功能,该功能可以提取矩阵并将其绘制。