Opencv中不支持的深度

Tha*_*lia 2 c++ opencv

我正在尝试学习一些基础知识,但我一直都会遇到错误.

我正在尝试调整cv :: Mat的大小

编辑以阐明我没有加载图像的原因:我试图测试而无法访问外部文件.

但是在代码中,我把int x = M.depth();它读取为0

cv::Mat M(2,2, CV_8UC3, cv::Scalar(0,0,255));
scale = 2;
cv::Size myImageSize;
myImageSize.height = M.rows;
myImageSize.width  = M.cols;

cv::Mat ImgCopy = cvCreateImage(myImageSize, M.depth(), M.channels());
..
cv::resize(M, ImgCopy, myImageSize, 0, 0, CV_INTER_LINEAR);
Run Code Online (Sandbox Code Playgroud)

我在cvCreateImage行上收到错误

Input image depth is not supported by function (Unsupported format) in unknown functio, file... \modules\core\src\array.cpp...
Run Code Online (Sandbox Code Playgroud)

我尝试过其他值(CV_32F ...),我得到了同样的错误.

请帮忙 !

Aur*_*ius 6

cvCreateImage()用于C API并返回一个IplImage*.要初始化a cv::Mat,请使用适当的构造函数.

cv::Mat ImgCopy(M.size(), M.type());
Run Code Online (Sandbox Code Playgroud)

是为新创建和分配内存最简洁的方法cv::Mat.

但是,cv::resize()使它更容易.你只需申报你的形象

cv::Mat ImgCopy
Run Code Online (Sandbox Code Playgroud)

以及cv::resize()允许自动计算正确尺寸和类型的参数.不需要指定最后三个参数,因为您不从默认值更改它们.

cv::resize(M, ImgCopy, myImageSize);
Run Code Online (Sandbox Code Playgroud)