我正在尝试学习一些基础知识,但我一直都会遇到错误。
我正在尝试调整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 ...),我得到了同样的错误。
请帮忙!
答案 0 :(得分:5)
cvCreateImage()
用于C API并返回IplImage*
。要初始化cv::Mat
,请使用适当的构造函数。
cv::Mat ImgCopy(M.size(), M.type());
是为新cv::Mat
创建和分配内存的最简洁方法。
然而,cv::resize()
让它更容易。你只需申报你的形象
cv::Mat ImgCopy
和cv::resize()
的参数允许自动计算正确的尺寸和类型。不需要指定最后三个参数,因为您没有从默认值中更改它们。
cv::resize(M, ImgCopy, myImageSize);
答案 1 :(得分: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;
}