opencv中resize函数 参数fx,fy 应该是一个值,而网上的例子 fx fy 分别(0,0)啥意思啊?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了opencv中resize函数 参数fx,fy 应该是一个值,而网上的例子 fx fy 分别(0,0)啥意思啊?相关的知识,希望对你有一定的参考价值。

cv::resize(src, dst, cv::Size(resize_width, resize_height), (0, 0), (0, 0), cv::INTER_LINEAR);

参考技术A 参数size已经给了resize_width, resize_height,fx fy就无所谓了 参考技术B 这个命令是基于已知数据的曲线关系,相应的X,Y值的预测等一系列;首先Y值生成的区域,如D1 ~ D9;有三组数据,分别用X,Y和X,分别在~ A9 A1,B1 ~ B9三柱内的C1 ~ C9,选择D1 ~ D9,FX这个图标,打开函数参数对话框中,选择对known_y点空白框右侧的按钮,选择B1 ~ B9即Y,选择已知x(known_x的)和X(new_x的);最后,const一般不填,它是用来指定b值的拟合线是0(假设直线拟合公式y = mx + B),不填是不是强制性的B = 0;最后,单击“确定”,这是唯一的一个选择区域的价值,那么你就要按F2键,然后按Ctrl + Shift +回车,然后在选区。希望能帮到你。

关于相机内参中的焦距fx和fy

当我们用OpenCV相机标定函数去标定相机时,我们能得到一个相机的内部参数,简称“内参”。内参是一个\(3 \times 3\) 的矩阵,

\[A=\begin{bmatrix} f_x & 0 & c_x \\ 0 & f_y & c_y \\ 0 & 0 & 1 \end{bmatrix}\]

其中\(c_x\)和\(c_y\)很容易理解,它们表示相机光轴在图像坐标系中的偏移量,以像素为单位。但对于焦距\(f_x\)和\(f_y\)就不是很直观了。为什么一个相机会出现两个焦距呢?在我们习惯使用的相机针孔模型中,一个透镜的焦距通常只有一个。然而我们不能用针孔模型去解释这两个内参中的焦距。但我们可以从透视规律来解释这两个焦距。

由相机拍摄得到的图像是遵从线性透视规律的。也就是说,一个物体的的宽和高会随着这个物体与相机间的距离增加而按比例变小。而对于一张矩形的图片,一个物体的宽和高则会根据物体与相机的距离按不同的比例变小。而这个比例,就是根据相机的焦距得到的。现在我们再利用针孔模型推导出这个比例关系,

\[\frac{f} {d} = \frac{x} {w} = \frac{y} {h}\]

以上是当图像是正方形时的关系,就是当\(f_x=f_y\)时的情况。其中f是相机的焦距,以像素为单位;d为物体到相机的距离,单位为米;x是物体在图像中的宽度,w为物体的实际宽度;y是物体在图像中的高度,而h是物体的实际高度。而对于一张矩形的图像,则有

\[\frac{f_x} {d} = \frac{x} {w} \]

\[\frac{f_y} {d} = \frac{y} {h} \]

 这就是相机内参有两个焦距的原因了。

以上是关于opencv中resize函数 参数fx,fy 应该是一个值,而网上的例子 fx fy 分别(0,0)啥意思啊?的主要内容,如果未能解决你的问题,请参考以下文章

Python OpenCV3:OpenCV 几何变换

Python调用某函数时如果想跳过某个可选参数怎么办,以OpenCV的函数resize()为例

OpenCV 完整例程30. 图像的缩放(cv2.resize)

cv2.resize中的None是什么意思?

opencv学习记录之几何变换

python3.6使用opencv的resize方法不定时报错