图像加法运算
cv2.add(src1,src2,dst,…)
- src1:第一幅图像
- src2:第二幅图像
- dst:要输出的图像–必须与输入的图像具有相同的大小和通道数
当两幅图像像素值相加结果小于等于255时,输出图像直接赋值该结果,如果相加值大于255,赋值255
import cv2
d=cv2.imread('d.jpg')
e=cv2.imread('e.jpg')
result=cv2.add(d,e)
cv2.imshow('d',d)
cv2.imshow('e',e)
cv2.imshow('result',result)
cv2.waitKey(0)
cv2.destoryAllWindows()
图像减法运算
cv2.subtract(src1,src2,dst,…)
- src1:第一幅图像
- src2:第二幅图像
- dst:要输出的图像–必须与输入的图像具有相同的大小和通道数
import cv2
import numpy as np
img = cv2.imread('a.jpg')
x=np.ones(img.shape,dtype='uint8')*100
#图像各像素减100
result=cv2.subtract(img,x)
cv2.imshow('original',img)
cv2.imshow('result',result)
cv2.waitKey(0)
cv2.destoryAllWindows()
图像与运算
cv2.bitwise_and(src1,src2,dst,…)
- src1:第一幅图像
- src2:第二幅图像
- dst:要输出的图像–必须与输入的图像具有相同的大小和通道数
import cv2
import numpy as np
img = cv2.imread('e.jpg')
row,col=img.shape[:2]
c=cv2.imread('d.jpg')
cv2.circle(c,(row//2,col//2),100,255,-1)
result=cv2.bitwise_and(img,c)
cv2.imshow('c',img)
cv2.imshow('circle',c)
cv2.imshow('result',result)
cv2.waitKey(0)
cv2.destoryAllWindows()
图像或运算
cv2.bitwise_or(src1,src2,dst,…)
- src1:第一幅图像
- src2:第二幅图像
- dst:要输出的图像–必须与输入的图像具有相同的大小和通道数
import cv2
import numpy as np
img = cv2.imread('e.jpg')
row,col=img.shape[:2]
c=cv2.imread('d.jpg')
cv2.circle(c,(row//2,col//2),100,255,-1)
result=cv2.bitwise_or(img,c)
cv2.imshow('c',img)
cv2.imshow('circle',c)
cv2.imshow('result',result)
cv2.waitKey(0)
cv2.destoryAllWindows()
图像异或运算
cv2.bitwise_xor(src1,src2,dst,…)
- src1:第一幅图像
- src2:第二幅图像
- dst:要输出的图像–必须与输入的图像具有相同的大小和通道数
import cv2
import numpy as np
img = cv2.imread('e.jpg')
row,col=img.shape[:2]
c=cv2.imread('d.jpg')
cv2.circle(c,(row//2,col//2),100,255,-1)
result=cv2.bitwise_xor(img,c)
cv2.imshow('c',img)
cv2.imshow('circle',c)
cv2.imshow('result',result)
cv2.waitKey(0)
cv2.destoryAllWindows()
图像非运算
cv2.bitwise_not(src1,src2,dst,…)
- src1:第一幅图像
- src2:第二幅图像
- dst:要输出的图像–必须与输入的图像具有相同的大小和通道数
import cv2
import numpy as np
img = cv2.imread('e.jpg')
result=cv2.bitwise_not(img)
cv2.imshow('c',img)
cv2.imshow('result',result)
cv2.waitKey(0)
cv2.destoryAllWindows()
图像融合
cv2.addWeighted(src1,alpha,src2,beta,gamma)
- src1:第一幅图像
- alpha:系数1
- src2:第二幅图像
- beta:系数2
- gamma:亮度调节
图像融合=图像1系数1+图像2系数2+亮度调节
import cv2
import numpy as np
img = cv2.imread('e.jpg')
d=cv2.imread('d.jpg')
result=cv2.addWeighted(img,0.6,d,0.5,0.5)
cv2.imshow('e',img)
cv2.imshow('d',d)
cv2.imshow('result',result)
cv2.waitKey(0)
cv2.destoryAllWindows()
获取图像ROI区域
import cv2
import numpy as np
img=cv2.imread('e.jpg')
imgd=cv2.imread('d.jpg')
a=np.zeros((200,200,3))
#通过像素矩阵获取ROI区域
a=img[150:350,150:350]
imgd[100:300,100:300]=a
cv2.imshow('a',imgd)
cv2.waitKey(0)
cv2.destoryAllWindows()
图像类型转换
cv2.cvtColor(src,code,dst,…)
- src:输入的需要进行颜色空间转换的图像
- code:转换的代码或标识
import cv2
img=cv2.imread('d.jpg')
result1=cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
result2=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
result3=cv2.cvtColor(result2,cv2.COLOR_GRAY2BGR)
cv2.imshow('img',img)
cv2.imshow('r1',result1)
cv2.imshow('r2',result2)
cv2.imshow('r3',result3)
cv2.waitKey(0)
cv2.destoryAllWindows()
报错解决
- 在对图像做加法运算的时候,一直报cv2.error,找了很多解决办法都没用,最后发现竟然是两张图片大小不一导致,将图片大小改为一致,则成功运行
- 显示图片没有shape属性,看了很多办法发现我们都没有这个问题,最后卸载opencv重新安装,问题解决
- cv2.error: OpenCV(4.5.3) 👎 error: (-5:Bad argument) in function ‘circle‘报错
- cv2.error: OpenCV(4.6.0) D:\a\opencv-python\opencv-python\opencv\modules\core\src\arithm.cpp:214