本节主要是进行图像一些基本运算,包括加减乘除,均方差运算,亮度对比度,逻辑运算。
以上对图像的操作均是对像素的处理,bitwise_and、bitwise_or、bitwise_xor、bitwise_not这四个按位操作函数。
bitwise_and是对二进制数据进行“与”操作,即对图像(灰度图像或彩色图像均可)每个像素值进行二进制“与”操作,1&1=1,1&0=0,0&1=0,0&0=0
bitwise_or是对二进制数据进行“或”操作,即对图像(灰度图像或彩色图像均可)每个像素值进行二进制“或”操作,1|1=1,1|0=0,0|1=0,0|0=0
bitwise_xor是对二进制数据进行“异或”操作,即对图像(灰度图像或彩色图像均可)每个像素值进行二进制“异或”操作,11=0,10=1,01=1,00=0
bitwise_not是对二进制数据进行“非”操作,即对图像(灰度图像或彩色图像均可)每个像素值进行二进制“非”操作,1=0,0=1
利用掩膜(mask)进行“与”操作,即掩膜图像白色区域是对需要处理图像像素的保留,黑色区域是对需要处理图像像素的剔除,其余按位操作原理类似只是效果不同而已。
import cv2 as cv
import numpy as np
#加法运算
def add_demo(m1,m2):
dst = cv.add(m1,m2)
cv.imshow("add_demo",dst)
#减法运算
def subtract_demo(m1,m2):
dst = cv.subtract(m1,m2)
cv.imshow("subtract_demo",dst)
#除法运算
def divide_demo(m1,m2):
dst = cv.divide(m1,m2)
cv.imshow("divide_demo",dst)
#乘法运算
def multiply_demo(m1,m2):
dst = cv.multiply(m1,m2)
cv.imshow("multiply_demo",dst)
#均方差
def others(m1,m2):
M1,dev1=cv.meanStdDev(m1)
M2,dev2=cv.meanStdDev(m2)
h,w=m1.shape[:2]
print(M1)
print(M2)
print(dev1)
print(dev2)
img=np.zeros([h,w],np.uint8)
m,dev = cv.meanStdDev(img)
print(m)
print(dev)
#逻辑运算
def logic_demo(m1,m2):
dst=cv.bitewise_and(m1,m2)
dst2=cv.bitewise_or(m1,m2)
dst3=cv.bitewise_not('sea.jpg')
cv.imshow("logic_window3",dst3)
cv.imshow("logic_window1",dst)
cv.imshow("logic_window2",dst2)
#提取亮度和对比度
def contract_bright_demo(image,c,b):
h,w,ch=image.shape
blank = np.zeros([h,w,ch],image,dtype)
dst = cv.addWeighted(image,c,blank,1-c,b)
cv.imshow("contract_bright_demo",dst)
部分内容转自
原文链接:https://blog.csdn.net/Lily_9/article/details/83143120