数字图像处理---算术运算与逻辑运算

图像运算通过对图像的像素值进行算术运算或逻辑运算等进行处理,可以将图像进行需求处理,常用的图像加法、图像减法、图像乘法、图像除法以及图像与运算、图像或运算、图像非运算、图像异或运算等通过opencv库中相关函数分别是:add、subtract、multiply、divide、bitwise_and、bitwise_or、bitwise_not、bitwise_xor。

注意1:在进行图像的运算中,像素的取值范围是[0,255],在这个过程中,若相关运算超过了范围,超过255的即取值255,小于0的即取值0。

注意2:在进行图像显示的时候,通过cv2读取的图像是bgr格式,若需要通过matplotlib进行显示,

则需要先进行格式的转化,即将bgr格式转为rgb格式。可通过cv2中的

cv2.cvtColor(image,cv2.COLOR_BGR2RGB)或[:,:,::-1]进行转换。

注意3:在进行图像运算的时候,一定要保证两个图像的分辨率和通道数一致才可以进行计算。

相关代码及案例:

#导库
import cv2
import matplotlib.pyplot as plt
import numpy as np

#读取图像并展示
image1 = plt.imread(r"D:\picture\pic02.jpg",1)
image2 = plt.imread(r"D:\picture\pic03.jpg",1)
img = [image1,image2]
for i in range(2):
    plt.subplot(1,2,f'{i+1}')
    plt.imshow(img[i])
    plt.axis('off')

原图像:

数字图像处理---算术运算与逻辑运算_第1张图片

#算术运算、逻辑运算
add = cv2.add(image1,image2)             #加
sub = cv2.subtract(image2,image1)        #减
cheng=cv2.multiply(image1,image2)        #乘
chu=cv2.divide(image1,image2)            #除法可实现目标的位置判断
yu=cv2.bitwise_and(image1,image2)        #与
huo=cv2.bitwise_or(image1,image2)        #或
yihuo=cv2.bitwise_xor(image1,image2)     #异或
fei=cv2.bitwise_not(image1)              #非

#通过matplitlib显示图形需要将图像格式从bgr转为rgb
add1 = add[:,:,::-1]           
sub1 = sub[:,:,::-1]           
cheng1 = cheng[:,:,::-1]       
chu1 = chu[:,:,::-1]           
yu1 = yu[:,:,::-1]             
huo1 = huo[:,:,::-1]           
yihuo1 = yihuo[:,:,::-1]       
fei1 = fei[:,:,::-1]           
pp = [add1,sub1,cheng1,chu1,yu1,huo1,yihuo1,fei1]
ppp = ['add1','sub1','cheng1','chu1','yu1','huo1','yihuo1','fei1']
for i in range(8):
    plt.subplot(2,4,f'{i+1}')
    plt.imshow(pp[i])
    plt.title(ppp[i])
    plt.axis('off')
plt.show()
 

经过运算之后的图像: 

数字图像处理---算术运算与逻辑运算_第2张图片

本篇主要讲述了图像运算的相关方法,希望能给你带来帮助。

你可能感兴趣的:(数字图像处理,opencv,人工智能,计算机视觉)