C++ 在OpenCV中创建矩阵后调整其大小
我是OpenCV新手,我正在看Canny的边缘检测教程。 我正在研究如何调整刚刚创建的C++ 在OpenCV中创建矩阵后调整其大小,c++,image,opencv,image-resizing,C++,Image,Opencv,Image Resizing,我是OpenCV新手,我正在看Canny的边缘检测教程。 我正在研究如何调整刚刚创建的mat的大小。代码如下: src = imread( impath ); ... dst.create( src.size(), src.type() ); 现在我尝试用以下方法调整垫子的大小: resize(dst, dst, dst.size(), 50, 50, INTER_CUBIC); 但这似乎没有改变任何事情 我有两个疑问: 1:在create()之后调用resize()是否做得很好? 2
mat
的大小。代码如下:
src = imread( impath );
...
dst.create( src.size(), src.type() );
现在我尝试用以下方法调整垫子的大小:
resize(dst, dst, dst.size(), 50, 50, INTER_CUBIC);
但这似乎没有改变任何事情
我有两个疑问:
1:在create()
之后调用resize()
是否做得很好?
2:如何指定垫的尺寸
我的目标是调整图像大小,如果图像不清晰请创建与src
大小相同的dst
mat。另外,当您调用resize
时,您同时传递目标大小和fx/fy
比例因子,您应该传递一个:
Mat src = imread(...);
Mat dst;
resize(src, dst, Size(), 2, 2, INTER_CUBIC); // upscale 2x
// or
resize(src, dst, Size(1024, 768), 0, 0, INTER_CUBIC); // resize to 1024x768 resolution
更新:来自OpenCV
文档:
cv::Mat img_dst;
cv::resize(img, img_dst, cv::Size(640, 480), 0, 0, cv::INTER_AREA);
cv::namedWindow("Contours", CV_WINDOW_AUTOSIZE);
cv::imshow("Contours", img_dst);
缩放只是调整图像的大小。OpenCV附带了一个函数
cv2.resize()用于此目的。可以指定图像的大小
手动,也可以指定比例因子。不同的
采用插值方法。优选的插值方法是
用于收缩的cv2.INTER_面积和cv2.INTER_立方(慢速)&
cv2。用于缩放的内部线性。默认情况下,使用的插值方法为
cv2.所有尺寸调整均为线性。可以调整输入的大小
使用以下任一方法进行图像处理:
另外,在visualc++
中,我尝试了两种收缩方法,cv::INTER_AREA
的工作速度明显快于cv::INTER_CUBIC
(如OpenCV
文档所述):
cv::Mat img_dst;
cv::resize(img, img_dst, cv::Size(640, 480), 0, 0, cv::INTER_AREA);
cv::namedWindow("Contours", CV_WINDOW_AUTOSIZE);
cv::imshow("Contours", img_dst);