c++ - 调整图像类型 "Mat"opencv C++

标签 c++ opencv image-processing

我想调整图像的大小,当图像是 IplImage 时,下面的代码可以工作,但是当我将它更改为 Mat 时,出现以下错误: - 无法将“cv::Mat::depth”从类型“int (cv::Mat::)() const”转换为类型“int”。 - 无法将参数“1”的“cv::Mat”转换为“const CvArr* {aka const void*}”到“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)

关于c++ - 调整图像类型 "Mat"opencv C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42625621/

相关文章:

c - OpenCV 上的逆向过滤——访问 DFT 值并乘以 DFT 矩阵

c++ - 带链接的基本哈希表

c++ - 将静态 C 库与 C++ 代码链接时出现 "undefined reference to"错误

c++ - opencv linemod抛出运行时错误

c - 在 cvSetCaptureProperty 中使用 CV_CAP_PROP_POS_FRAMES 获取单个帧

delphi - 使用 StretchDIBits 使用 Delphi 6 处理条形码图像 - 输出中缺少条形线

c++ - 如何在C++中实现单例

c++ - 为什么我在这个程序上得到 "abort"?

android - 使用JNI获取arrayList的元素

python - PIL - 将 GIF 帧转换为 JPG