OpenCV图像运算基础

提示:志存高远且脚踏实地

文章目录

一、前言

二、主要内容

1.逻辑运算

2.几何运算

三、总结


一、前言

图像的基本运算有很多种,本次学习逻辑运算和几何运算。

二、主要内容

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)

三、总结

图像运算

逻辑运算

几何运算

缩放:resize(src, dsize))

翻转:flip(src, flipcode)

仿射:wapAffine(src, M,dsize)

平移

缩放

旋转

猜你喜欢

转载自blog.csdn.net/CHENG15234944691/article/details/123681485