2

我正在尝试学习一些基础知识,但我不断遇到错误。

我正在尝试调整 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);

我在 cvCreateImage 行上遇到错误

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

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

请帮忙 !

4

2 回答 2

6

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

cv::Mat ImgCopy(M.size(), M.type());

是为新的cv::Mat.

但是,cv::resize()使它更容易。你只需要声明你的形象

cv::Mat ImgCopy

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

cv::resize(M, ImgCopy, myImageSize);
于 2013-05-28T19:10:29.550 回答
1

试试这个代码:

using namespace cv;
using namespace std;
int main( int argc, char** argv )
 {
IplImage *src,*dst;
src=cvLoadImage("img.png");
cvNamedWindow("SRC", CV_WINDOW_AUTOSIZE);
cvNamedWindow("DST", CV_WINDOW_AUTOSIZE);


 dst = cvCreateImage(cvSize(500,500),src->depth,src->nChannels);
cvResize(src,dst);


cvShowImage("SRC",src);
cvShowImage("DST",dst);


cvWaitKey(0);
cvDestroyWindow("SRC");
cvDestroyWindow("DST");
cvReleaseImage(&dst);
cvReleaseImage(&src);

return 0;
}
于 2013-05-28T19:02:43.243 回答