调整图像类型“Mat”opencv C ++

我想调整我的图像下面的代码工作时,图像是一个IplImage,但当我将它更改为马特我得到这些错误: - 不能转换类型'int(cv :: Mat:深度''cv :: Mat :: depth' :)()const'键入'int'。 - 无法将'cv :: Mat'转换为'const CvArr * {aka const void *}'作为参数'1'到'void cvResize(const CvArr *,CvArr *,int)'。

 Mat image=imread("21.png", CV_LOAD_IMAGE_GRAYSCALE);
Mat dst;
dst= cvCreateImage(cvSize(150,150),image.depth,image.channels());
cvResize(image, dst);
namedWindow("Source", CV_WINDOW_AUTOSIZE );
imshow("Source", image);
namedWindow("resize", CV_WINDOW_AUTOSIZE );
imshow("resize", dst);
waitKey(0);
    return 0;

有人可以帮帮我吗?


使用C ++ API语法(目前您正在使用C api):

cv::Mat image = cv::imread("21.png", CV_LOAD_IMAGE_GRAYSCALE);
cv::Mat dst;
cv::resize(image, dst, cv::Size(150,150));

cv::namedWindow("Source", CV_WINDOW_AUTOSIZE );
cv::imshow("Source", image);
cv::namedWindow("resize", CV_WINDOW_AUTOSIZE );
cv::imshow("resize", dst);
waitKey(0);

如果您不需要,请不要再使用旧的C api cvMethodname函数。 而是使用cv :: Methodname函数,这通常不容易出错。

如果您需要指定宽高比或不同的插值,请参阅http://docs.opencv.org/2.4/modules/imgproc/doc/geometric_transformations.html#void%20resize(InputArray%20src,%20OutputArray%20dst,%20Size %20dsize,%20double%20fx,%20double%20fy,%20int%20interpolation)


您也可以使用下面给出的代码:

 Mat3b groupres;
 cvtColor(img, groupres, COLOR_GRAY2BGR);
 imshow("Grouped Result", groupres);
 Size size1(400, 450);
 resize(groupres, groupres, size1);
 waitKey();

waitKey(); 帮助图像保持并等待响应。

链接地址: http://www.djcxy.com/p/89829.html

上一篇: Resize an image type "Mat" opencv C++

下一篇: Function convert Hex String to BitArray C#