OpenCV之图像几何变换

举报
Y_K_C 发表于 2021/12/02 12:22:43 2021/12/02
【摘要】 声明:本文是OpenCV入门级别的技术分享,主要围绕图像预处理来进行学习,所用语言均为Python。

1. 图像缩放与插值

图像预处理时需要对图像进行缩放,缩放时就需要在原有图像的像素点间插入新的像素点,所插入的像素点,插入的方法主要由最邻近插值、双线性插值等,用到的API时resize(),具体如下:

import cv2 as cv
path = "C:\\Users\\27914\\Desktop\\images\\test2.jpg"
image = cv.imread(path)
w,h,c = image.shape
#result1 = cv.resize(image,(w*2,h*2),interpolation=cv.INTER_CUBIC)
result1 = cv.resize(image,(0,0),fx=1.5,fy=1.5,interpolation=cv.INTER_NEAREST)
result2 = cv.resize(image,(0,0),fx=1.5,fy=1.5,interpolation=cv.INTER_CUBIC)
result3 = cv.resize(image,(0,0),fx=1.5,fy=1.5,interpolation=cv.INTER_LINEAR)
cv.imshow("result1",result1)
cv.imshow("result2",result2)
cv.imshow("result3",result3)
cv.waitKey(0)
cv.destroyAllWindows()

需要注意的是参数dsize,该参数是指输出的图像的大小,当它指定时(即不为(0,0)),fx,fy参数不起作用,当dsize指定为(0,0)时,需要fx,fy来确定缩放的程度,fx,fy分别表示要x轴,y轴要缩放的倍数,interploplation表示插值的方法,cv.INTER_CUBIC为在4x4像素领域内进行双三次插值,cv.INTER_NEAREST,表示最邻近插值,cv.INTER_LINEAR表示双线性插值,原理问题这里不探讨,只需记住cv.INTER_CUBIC,cv.INTER_LINEAR只用于放大,cv.INTER_NEAREST放大缩小均可即可,当然还有其它的插值方法,后面再讨论。
在某些情况下,使用较为低级的插值方法可能会出现马赛克。

2.图像的镜像翻转

图片的镜像翻转比较简单,只需要调用API——flip()即可,具体如下:

import cv2 as cv
path = "C:\\Users\\27914\\Desktop\\images\\test2.jpg"
image = cv.imread(path)
up_down = cv.flip(image,0)
left_right = cv.flip(image,1)
center = cv.flip(image,-1)
cv.imshow("up_down",up_down)
cv.imshow("left_right",left_right)
cv.imshow("center",center)
cv.waitKey(0)
cv.destroyAllWindows()

第一个参数为原始图像,第二个参数有三种选择1,0,-1,1表示左右翻转,0表示上下翻转,-1表示对角线翻转,具体输出如下:
原图:
image.png
上下翻转:
image.png
左右翻转:
image.png
对角线翻转:
image.png
图像翻转在深度学习时数据集量较少时可以补充数据集的量。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。