OpenCV之图像几何变换
【摘要】 声明:本文是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表示对角线翻转,具体输出如下:
原图:
上下翻转:
左右翻转:
对角线翻转:
图像翻转在深度学习时数据集量较少时可以补充数据集的量。
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)