在OpenCV中创建矩阵后,调整矩阵大小
resize a Matrix after created it in OpenCV
我是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
大小相同的dst
垫。此外,当您调用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
文档:
缩放只是调整图像的大小。OpenCV附带一个函数cv2.resize()。可以指定图像的大小手动,也可以指定比例因子。不同的使用插值方法。优选的插值方法有用于收缩的cv2.INTER_AREA和用于收缩的cv2.INTER_CUBIC(慢速)&cv2.INTER_LINEAR用于缩放。默认情况下,使用的插值方法为cv2.INTER_LINEAR用于所有调整大小的目的。您可以调整输入的大小图像以下任一方法:
import cv2
import numpy as np
img = cv2.imread('messi5.jpg')
res = cv2.resize(img,None,fx=2, fy=2, interpolation = cv2.INTER_CUBIC)
#OR
height, width = img.shape[:2]
res = cv2.resize(img,(2*width, 2*height), interpolation = cv2.INTER_CUBIC)
此外,在Visual C++
中,我尝试了两种收缩方法,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);
相关文章:
- 如何创建一个CMake变量,除非显式重写,否则使用默认值
- 使用std::multimap迭代器创建std::list
- 在全局变量中保存类的实例以重新创建类(创建"backup")
- 如何创建可调整大小和固定大小的容器的变体
- 为什么 vector 的方法调整大小会创建一个额外的对象?
- 通过新的后传递后创建的动态数组的错误以调整函数
- 调整大小的大小时,会创建自定义的Windows边框边缘消失
- 在内存(C 和/或 C++)中创建和管理字节缓冲区,该缓冲区可以根据需要自动调整大小
- Visual Studio 2012应用程序窗口创建/调整大小与VS2008窗口创建不同?为什么?
- 使用固定的顶部坐标创建可调整大小的窗口
- 通过定义创建和调整变量名称和值
- 在OpenCV中创建矩阵后,调整矩阵大小
- 尝试在矢量类中创建调整大小函数
- 如何为Windows应用程序创建可移动/可调整大小/可配置的工具栏
- 在winforms中创建可移动和可调整大小的行
- WinAPI:创建可调整大小的窗口,没有标题栏,但有最小化/最大化/关闭按钮(如Firefox/Chrome/Opera
- Qt,设计师创建scrollAreaWidgetContents在scrollArea,我不能调整我的imagelabe
- 如何在wxwidgets中创建可调整大小的面板
- PyQt4 创建无法调整大小的窗口
- 如何创建一个可调整大小的Qt缩略图预览