OpenCV学习-P4-P18 Opencv基本操作介绍及图像基础处理

OpenCV学习-P4,P5 Opencv核心模块及基本操作介绍

  • 1 OpenCV核心模块
  • 2 OpenCV基础操作
    • 2.1 读取图像
    • 2.2 显示图像和保存图像
    • 2.3 绘制几何图形
    • 2.4 获取并修改图像中的像素点
    • 2.5 获取图像属性
    • 2.6 图像的加法、混合、缩放、平移、旋转
    • 2.7 仿射变换
    • 2.8 透射变换
    • 2.9 图像金字塔

1 OpenCV核心模块

OpenCV学习-P4-P18 Opencv基本操作介绍及图像基础处理_第1张图片
OpenCV学习-P4-P18 Opencv基本操作介绍及图像基础处理_第2张图片

2 OpenCV基础操作

2.1 读取图像

cv.imread(“1.jpg”,1):彩色读图
cv.imread(“1.jpg”,0):灰度读图
cv.imread(“1.jpg”,-1):读图包含alpha通道,即透明度

2.2 显示图像和保存图像

Opencv采用BGR通道存储图像
matplotlib以RGB通道显示,所以显示图片要翻转通道
使用plt.imshow(img[:,:,::-1])或者cv2.cvtColor(img , cv2.COLOR_BGR2RGB)转换

lena = cv2.imread("img.jpg")
#lena = cv2.cvtColor(lena , cv2.COLOR_BGR2RGB)
plt.imshow(lena[:,:,::-1])
plt.show()
#cv2.imshow("image", lena)
#cv2.waitKey(0)

2.3 绘制几何图形

img= np.zeros((512,512,3),np.uint8)
cv2.line(img,(0,0),(511,511),(255,0,0),5)
cv2.circle(img,(256,256),60,(0,0,255),-1)
cv2.rectangle(img,(100,100),(400,400),(0,255,0),5)
cv2.putText(img,"hello",(100,150),cv2.FONT_HERSHEY_DUPLEX,5,(255,255,255),3)
plt.imshow(img[:,:,::-1])
plt.show()

2.4 获取并修改图像中的像素点

img= cv2.imread(".\\20220822162647.jpg")
px=img[11,1,0]
img[0,0]=[255,255,255]
plt.imshow(img[:,:,::-1])
plt.show()

2.5 获取图像属性

图像大小
col,row= img.shape
OpenCV学习-P4-P18 Opencv基本操作介绍及图像基础处理_第3张图片
通道拆分
b,g,r=cv.split(img)
通道合并
img=cv.merge(b,g,r)

色彩空间改变
BRG—》灰度
gray=cv.cvtColor(img,cv.COLOR_BGR2GRAY)
BRG—》HSV
hsv=cv.cvtColor(img,cv.COLOR_BGR2HSV)

2.6 图像的加法、混合、缩放、平移、旋转

1)图像的加法
如果图像相加超过255则设置为255,这样有利于图像的叠加
cv.add(img1,img2)
2)图像的混合
dst=aimg1+bimg2+c
img=cv.addWeighted(img1,0.7,img2,0.3,0)
3)图像的缩放
cv2.resiize(src,dsize,fx=0,fy=0,interpolation=cv2.INTER_LINEAR)
dsize:绝对尺寸
fx,fy:相对尺寸,将dsize设置为None,然后将fx和fy设置为比例因子即可
interpolation:插值方法

img= cv2.imread(".\\20220822162647.jpg")
a=img.shape[:3]
img2=cv2.resize(img,None,fx=0.05,fy=0.05)
plt.imshow(img2[:,:,::-1])
plt.show()

4)图像的平移
OpenCV学习-P4-P18 Opencv基本操作介绍及图像基础处理_第4张图片
将img平移(100,50)

img= cv2.imread(".\\20220822162647.jpg")
col,row= img.shape[:2]
M=np.float32([[1,0,100],[0,1,50]])
img2=cv2.warpAffine(img,M,(col*2,row*2))
plt.imshow(img2[:,:,::-1])
plt.show()

5)图像的旋转
OpenCV学习-P4-P18 Opencv基本操作介绍及图像基础处理_第5张图片
OpenCV学习-P4-P18 Opencv基本操作介绍及图像基础处理_第6张图片
OpenCV学习-P4-P18 Opencv基本操作介绍及图像基础处理_第7张图片
OpenCV学习-P4-P18 Opencv基本操作介绍及图像基础处理_第8张图片
OpenCV学习-P4-P18 Opencv基本操作介绍及图像基础处理_第9张图片
opencv中旋转分为两步:
1.生成旋转矩阵
M=cv2.getRotationMatrix2D((col/2,row/2),45,1)
2,使用旋转矩阵进行变换
img2=cv2.warpAffine(img,M,(col,row))

img= cv2.imread(".\\20220822162647.jpg")
col,row= img.shape[:2]
#第一步,确定旋转矩阵
M=cv2.getRotationMatrix2D((col/2,row/2),45,1)
#第二步,进行变换
img2=cv2.warpAffine(img,M,(col,row))
plt.imshow(img2[:,:,::-1])
plt.show()

2.7 仿射变换

仿射变换中原图平行的变换后还是平行,点线关系不变,要确定六个参数,所以要找三个点,pst1表示变换前的点,pst2表示变换后的点
OpenCV学习-P4-P18 Opencv基本操作介绍及图像基础处理_第10张图片
OpenCV学习-P4-P18 Opencv基本操作介绍及图像基础处理_第11张图片

img= cv2.imread(".\\20220822162647.jpg")
col,row= img.shape[:2]
#第一步,构造变换矩阵,变换前的点和变换后的点
pst1=np.float32([[50,50],[200,50],[50,200]])
pst2=np.float32([[100,100],[200,50],[100,250]])
#第二步,构造变换矩阵
M=cv2.getAffineTransform(pst1,pst2)
#第三步,进行变换
img2=cv2.warpAffine(img,M,(col,row))
plt.imshow(img2[:,:,::-1])
plt.show()

2.8 透射变换

改变视角,要求八个参数,所以要找四个点,pst1表示变换前的点,pst2表示变换后的点
OpenCV学习-P4-P18 Opencv基本操作介绍及图像基础处理_第12张图片
OpenCV学习-P4-P18 Opencv基本操作介绍及图像基础处理_第13张图片

img= cv2.imread(".\\20220822162647.jpg")
col,row= img.shape[:2]
#第一步,构造变换矩阵,变换前的点和变换后的点
pst1=np.float32([[50,65],[368,52],[28,387],[389,390]])
pst2=np.float32([[150,145],[300,100],[150,290],[310,300]])
#第二步,构造变换矩阵
M=cv2.getPerspectiveTransform(pst1,pst2)
#第三步,进行变换
img2=cv2.warpPerspective(img,M,(col,row))
plt.imshow(img2[:,:,::-1])
plt.show()

2.9 图像金字塔

OpenCV学习-P4-P18 Opencv基本操作介绍及图像基础处理_第14张图片
OpenCV学习-P4-P18 Opencv基本操作介绍及图像基础处理_第15张图片

你可能感兴趣的:(OpenCV笔记,opencv,python)