我希望调整图像大小,下面的代码在图像是IplImage时工作,但当我将其更改为Mat时,我会收到以下错误: - 不要将'cv :: Mat :: depth'从类型'int(cv :: Mat ::)()const'转换为'int'类型。 -Cannot将'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;
有人可以帮帮我吗?
答案 0 :(得分:6)
使用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函数,这些函数通常不易出错。
答案 1 :(得分:0)
您还可以使用以下代码:
Mat3b groupres;
cvtColor(img, groupres, COLOR_GRAY2BGR);
imshow("Grouped Result", groupres);
Size size1(400, 450);
resize(groupres, groupres, size1);
waitKey();
waitKey();
可帮助图像保持并等待响应。