首页 > 编程知识 正文

opencv图像旋转(SDL缩放与ffmpeg缩放选择)

时间:2023-05-06 15:15:34 阅读:101852 作者:3112

前言

对于色彩空间的转换,我们将通过HSV格斗向大家介绍。至于其他色彩空间的转换和应用,我们后面会学习其他知识,单独讲。从这篇文章开始,我们将学习OpenCV的几何变换。

比如在图像处理领域,我们经常会遇到图像缩放、旋转等操作,尤其是对于有使用PS经验的用户来说,这些操作肯定是得心应手的,但其实底层代码才是后面要解释的知识。本文将介绍缩放的知识。

00-1010在OpenCV中,它为我们提供了缩放函数cv2.resize(),其定义如下:

Defresize (src,dsize,dst=无,FX=无,FY=无,插值=无): src:表示要缩放的原始图像。

Dsize:缩放图像的大小,也称为大小。

Fx:表示水平缩放的比例。

Fy:表示垂直缩放的比例。

插值:表示插值方法。

插值值如下:

类型

解释

cv2。内部线性

双线性插值(默认模式)

cv2。INTER _近网

最近插值

cv2。INTER_CUBIC

三次样条插值首先对源图像附近的4*4邻域进行三次样条拟合,然后将目标像素对应的三次样条值作为目标图像对应像素点的值。

cv2。中间区域

区域插值是根据当前像素点周围区域的像素实现对当前像素点的采样,类似于最近邻插值方法。

cv2。INTER_LANCZ0S4

一种使用8*8最近邻的兰佐斯插值方法

cv2。内部线性精确

位精确双线性插值

cv2。INTER_MAX

差分编码掩码

cv2。翘曲_填充_异常值

标记以填充目标图像中的所有像素。如果它们中的一些对应于源图像中的奇异点(异常值),它们将被设置为0。

cv2。扭曲逆映射

值,逆变换,例如,极坐标变换。如果没有设置标志,则转换为:dst(,p)=src (x,y);如果设置了标志,它将被转换为:dst (x,y)=src(,p)

在cv2.resize()函数中,目标图像的大小可以通过“dsize”或“fx,fy”来指定。

dsize指定frdxtg时,无论是否指定FX和FY,都有一个参数dsize来决定目标图像的大小,即dsize优先级最高。具体数学公式如下:

width=(double)dszie . width/src . cols

高度=(双)dszie.height/src.rows

注意,dsize的第一个参数是列数,第二个参数是行数,与shape相反。

虽然frdxtg使用FX和fy来指定目标图像的大小,但数学公式如下:

dsize=Size(圆形(fx*src.cols),圆形(fy*src.rows))

至于最后一个参数插值,是指在对图像进行几何处理时,给无法直接映射的像素赋值。比如图像在一定大小的区域会放大2倍,有些图像可能因为太小而缺少一些像素,有些图像可能因为太大而没有多余的像素。对于这些像素,插值决定了如何确定它们的值。

00-1010现在我们已经知道了OpenCV中缩放函数resize的所有参数,下面我们来实现一个简单的图像缩放,具体代码如下:

导入cv2

img=cv2.imread('4.jpg ')

行,列=img.shape[:2]

size=(int(cols*2),int(row * 1))

结果=cv2.resize(img,size)

cv2.imshow('img ',img)

打印(img.shape)

cv2.imshow('result ',result)

打印(结果.形状)

cv2.waitKey()

2.cv2.destroyAllWindows()在这里,我们首先通过img.shape获取图片的长度、宽度和像素,然后将行和列放大2倍。运行后,我们会得到下图。

00-1010以上,我们通过dszie参数实现了缩放。现在,我们通过FX和FY参数实现了缩放。具体代码如下:

导入cv2

img=cv2.imread('4.jpg ')

结果=cv2.resize(img,None,fx=2,fy=1)

cv2.imshow('img ',img)

打印(img.shape)

cv2.imshow('result ',result)

打印(结果.形状)

cv2.waitKey()

2.代码cv2.destroyAllWindows()的效果与上面一致,所以不会显示运行结果。可以看出fx和fy的代码会更加简洁明了。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。