opencv学习笔记---No2图片的几何变换
图片的几何变换
图片的简单变换不外乎有这么几种 :缩放,平移,镜像,剪切,旋转等。
昨天小编有提到图像都是由一个个像素点组成的,对图片进行操作等同于对每个像素点组成的矩阵进行操作。
缩放
【opencv学习笔记---No2图片的几何变换】opencv中的resize函数可以完成此功能
常见的缩放的方法有:最近邻域插值、双线性插值、像素关系重采样、立方插值
双线性插值计时通过横纵坐标确立新的像素点的位置。其实我们只要获得图片的宽和高就可以进行缩放处理,以缩小为例,原来的图像中的某一点坐标为(100,200),缩小至二分之一后就是(50,100)【注:我们默认等比例缩小】具体的代码实现如下:
import cv2
import numpy as np
image = cv2.imread("test.jpg")
imgInfo = image.shape
height = imgInfo[0]
width = imgInfo[1]
mode = imgInfo[2]
##图pain的缩放
reheight = int(height*0.5)
rewidth = int(width*0.5)
newimg = cv2.resize(image,(reheight,rewidth))
#1:原始图片 2:缩放矩阵
cv2.imshow("image",newimg)
效果图如下:
文章图片
缩放.PNG 平移
平移就是对像素点做坐标轴上的平移,比如说原来某一像素点为(20,150),我们可以对其进行任意方向的移动,具体实现到就是将像素矩阵做加减运算,可以用warpAffine函数 具体的代码实现如下:
matShift = np.float32([[1,0,100],[0,1,100]])# 2*3
dst = cv2.warpAffine(image,matShift,(height,width))
cv2.imshow("dst",dst)
剪切
剪切就是在整个大的矩阵中拿出一部分(必须是连续的哟)
'''
newing_2 = image[100:200,200:300]
cv2.imshow("image1",newing_2)
'''
文章图片
剪切.PNG 镜像
镜像就是做镜面处理。
#图pain的景象
newImgInfo = (height*2,width,mode)
dst = np.zeros(newImgInfo,np.uint8)#uint8
for i in range(0,height):
for j in range(0,width):
dst[i,j] = image[i,j]
#x y = 2*h - y -1
dst[height*2-i-1,j] = image[i,j]
for i in range(0,width):
dst[height,i] = (0,0,255)#BGR
cv2.imshow('dst',dst)
cv2.waitKey(0)
效果图如下:
文章图片
镜像.PNG 明天将继续和大家分享。
推荐阅读
- 听说你想报打卡学习的社群,你真的准备好了吗()
- Machine|Machine Learning 学习笔记-介绍
- 操作系统学习笔记5|操作系统学习笔记5 | 用户级线程 && 内核级线程
- 嵌入式linux基础学习全套精品视频教程
- 零基础学习嵌入式(嵌入式linux视频教程免费分享)
- 以太坊|以太坊 layer2: optimism 源码学习(二) 提现原理
- SLAM|轮子——双目立体校正(C++/OpenCV)
- opencv学习|opencv3双目视觉中的立体校正原理
- 吴恩达深度学习课程编程作业|吴恩达深度学习课程第四章第一周编程作业(pytorch实现)
- 图像处理|吴恩达深度学习-Course4第三周作业 yolo.h5文件读取错误解决方法