数字图像处理(基于OpenCV的图像读写及几何变换)

 目的:熟悉OpenCV读取图像及实现图像的平移、旋转、缩放、拉伸。

1.使用opencv和matplotlib库完成图像的读,写,显示以及图像的通道分离,合并。

import cv2 
import numpy as np
import matplotlib.pyplot as plt
image=cv2.imread("./baboonrgb.jpg")  #读取图片
image1=cv2.imwrite('b1.jpg',image)
b,g,r=cv2.split(image)
hb=cv2.merge((b,g,r))              #转换b,g,r通道,不然会影发色彩偏差

img_test=[image,r,b,g,hb]
plt.figure(figsize=(10,10))#图片大小
for i in range(1,6):
    plt.subplot(1,5,i)
    if i==1 or i==5:
        plt.imshow(cv2.cvtColor(img_test[i-1],cv2.COLOR_BGR2RGB))
    else:
        plt.imshow(img_test[i-1],cmap="gray")
    #隐藏坐标系
    plt.axis('off')
    #调整间距
    plt.subplots_adjust(left=None,bottom=None,right=None,top=None,wspace=None,hspace=0.1)
plt.show()

数字图像处理(基于OpenCV的图像读写及几何变换)_第1张图片

 2.使用OpenCV读入一张彩色图片,完成对图片分别进行平移(右50像素,下30像素),旋转(逆时针60度),水平镜像,放大到1080*840像素,缩小到256*128像素操作

from PIL import Image
import matplotlib.pyplot as plt
iimg=Image.open('./lenargb.jpg')
gray1=iimg.convert('L')
r,g,b=iimg.split()
pic=Image.merge('RGB',(r,g,b))
import cv2,math
import matplotlib.pyplot as plt
import numpy as np
img=cv2.imread('./baboonrgb.jpg',1)

#右移50,下移30
t1=np.float32([[1,0,50],[0,1,30]])
a1=cv2.warpAffine(img,t1,(img.shape[0],img.shape[1]))

#逆时针旋转60度
t2=np.float32([[math.cos(math.pi/3),math.sin(math.pi/3),0],[-math.sin(math.pi/3),math.cos(math.pi/3),0]])
a2=cv2.warpAffine(img,t2,(img.shape[0],img.shape[1]))
a3=cv2.flip(img,1)#水平镜像
a4=cv2.resize(img,(1080,840))
a5=cv2.resize(img,(256,128))
img_test=[a1,a2,a3,a4,a5]
plt.figure(figsize=(10,10))
for i in range(1,6):
    plt.subplot(1,5,i)
    plt.imshow(cv2.cvtColor(img_test[i-1],cv2.COLOR_BGR2RGB))
    #隐藏坐标系
    plt.axis('off')
    #调整间距
    plt.subplots_adjust(left=None,bottom=None,right=None,top=None,wspace=None,hspace=0.1)
plt.show()

数字图像处理(基于OpenCV的图像读写及几何变换)_第2张图片

 

你可能感兴趣的:(opencv,计算机视觉,python)