I want to resize my image the code below works when the image is an IplImage but when i change it into Mat i get these errors: -Cannot convert 'cv::Mat::depth' from type 'int (cv::Mat::)() const' to type 'int'. -Cannot convert 'cv::Mat' to 'const CvArr* {aka const void*}' for argument '1' to '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;
Can someone please help me?
To resize an image in Python, you can use cv2. resize() function of OpenCV library cv2. Resizing, by default, does only change the width and height of the image. The aspect ratio can be preserved or not, based on the requirement.
use the C++ API syntax (currently you are using the 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);
please don't use the old C api cvMethodname functions anymore if you don't have to. Instead use the cv::Methodname functions which are typically much less error prone.
If you need to specifiy an aspect ratio or different interpolation, see 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)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With