提示:志存高远且脚踏实地
一、前言
图像的基本运算有很多种,本次学习逻辑运算和几何运算。
二、主要内容
1.逻辑运算
逻辑运算是只对两幅图像的对应像素做逻辑与、逻辑或、异或、非等运算。
2.几何运算
几何运算也称为几何变换。主要有缩放、翻转、仿射等。
缩放:resize(src, dsize))
翻转:flip(src, flipcode)
仿射:wapAffine(src, M,dsize)
<1>平移
<2>缩放
<3>旋转
缩放
# 按比例缩放
import cv2
im=cv2.imread('lena.jpg')
sc=[1.0,0.5,1.5,2.0]
cv2.imshow('input',im)
while True:
key=cv2.waitKey()
if 48<=key<=51:
x=y=sc[key-48]
im2=cv2.resize(im,None,fx=x,fy=y)
cv2.imshow('output',im2)
翻转
import cv2
im=cv2.imread('lena.jpg')
cv2.imshow('Input',im)
while True:
key=cv2.waitKey()
if key==48:
im2=im
elif key==49:
im2=cv2.flip(im,0)
elif key==50:
im2=cv2.flip(im,1)
elif key==51:
im2=cv2.flip(im,-1)
cv2.imshow('output',im2)
仿射
dst(x,y)=cv2.warpAffine(src, M, dsize)
其中,M是变换矩阵;dsize是结果图像尺寸。
像素映射规则:
dst(x, y)=src(M00x+M01y+M02, M10x+M11y+M12)
仿射——平移
import cv2
import numpy as np
im=cv2.imread('HappyFish.jpg')
cv2.imshow('input',im)
shape=im.shape[:2]
x=100
y=30
M=np.array([[1,0,x],[0,1,y]],dtype=np.float32)
dst=cv2.warpAffine(im,M,shape)
cv2.imshow(‘translation', dst)
cv2.waitKey(0)
仿射——缩放
import cv2
import numpy as np
im=cv2.imread('HappyFish.jpg')
cv2.imshow('input',im)
shape=im.shape[:2]
M=np.array([[0.5,0,0],[0,0.5,0]],dtype=np.float32)
dst=cv2.warpAffine(im,M,shape)
cv2.imshow(‘Resize', dst)
cv2.waitKey(0)
仿射——旋转
import cv2
import numpy as np
im=cv2.imread('HappyFish.jpg')
cv2.imshow('input',im)
shape=im.shape[:2]
M=cv2.getRotationMatrix2D((shape[0]/2,shape[1]/2),-60,0.5)
dst=cv2.warpAffine(im,M,shape)
cv2.imshow('Rotation', dst)
cv2.waitKey(0)