簡體   English   中英

調整圖像類型“Mat”opencv C ++的大小

[英]Resize an image type “Mat” opencv C++

我希望調整我的圖像大小,下面的代碼在圖像是IplImage時工作,但是當我將其更改為Mat時我得到這些錯誤: - 從類型'int轉換'cv :: Mat :: depth'(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;

有人可以幫幫我嗎?

使用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(); 幫助圖像保持並等待響應。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM