赞
踩
包含:图像缩放,图像剪切,图像位移,图像镜像,仿射变化,旋转变化
#图像剪裁与预处理 #图片的缩放 import cv2 import numpy as np img=cv2.imread('02.jpg',1) #shape中包含三个信息 # [0]:行数 # [1]:列数 # [2]:通道数 imgInfo=img.shape height=imgInfo[0] width=imgInfo[1] deep=imgInfo[2] print(deep) #【1】放大 缩小 a=1.2 dstHeight=int(height*a) dstWidth=int(width*a) #放大缩小 涉及到图像的插值 #常见的插值 最近邻域差插值 双线性插值 立方插值 dst=cv2.resize(img,(dstWidth,dstHeight)) cv2.imshow('resizeimage',dst) #【2】图像剪切 #[2.1]中间位置剪切 x_center=int((width/2)) y_center=int((height/2)) cutimg_median=img[x_center-200:x_center+200,y_center-200:y_center+200] cv2.imshow('cut_media',cutimg_median) #[2.2]任意位置剪切 cutimg_every=img[200:600,200:400] cv2.imshow('cut_every',cutimg_every) #【3】 图片位移 #设定平移矩阵 #矩阵讲解 #matshift拆成22的矩阵和21的矩阵 #A=[[1,0],[0,1]],B=[[100],[200]] C=[X,Y] #A*C=B #最终效果图像沿着x轴移动100,沿着y轴移动200; matshift=np.float32([[1,0,200],[0,1,200]]) shiftimg=cv2.warpAffine(img,matshift,(height,width)) cv2.imshow('shiftimg',shiftimg) #【4】图像镜像 #上下镜像 #空白图像的尺寸大小 newImgInfo=(height*2,width,deep) #创建空白图片 samedst=np.zeros(newImgInfo,np.uint8) #开始镜像 for i in range(0,height): for j in range(0,width): #samedst上部分像素写入 samedst[i,j]=img[i,j] #samedst下部分像素写入 samedst[height*2-i-1,j]=img[i,j] #绘制镜像线 for i in range(0,width): samedst[height,i]=(0,0,255) cv2.imshow('samedst',samedst) #【5】仿射变化 #设定变化矩阵 根据三组对应点寻找仿射变化的矩阵 matSrc=np.float32([[0,0],[0,height-1],[width-1,0]]) matDst=np.float32([[50,50],[300,height-200],[width-300,100]]) #寻找仿射变化矩阵 matAffine=cv2.getAffineTransform(matSrc,matDst) affineImg=cv2.warpAffine(img,matAffine,(width,height)) cv2.imshow('affineImg',affineImg) #【6】旋转变化 matRotate=cv2.getRotationMatrix2D((height*0.5,width*0.5),45,0.5) rotateImg=cv2.warpAffine(img,matRotate,(height,width)) cv2.imshow('rotateImg',rotateImg) cv2.waitKey(0)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。