图像上的算术运算
图像加法(推荐用opencv的函数)
x=np.uint8([250])
y=np.uint8([10])
print (cv2.add(x,y))
print (x+y)
图像混合
img1=cv2.imread('D:\BaiduNetdiskDownload\one.jpg',1)
img2=cv2.imread('D:\BaiduNetdiskDownload\two.jpg',1)
print(img.shape)
print(img1.shape)
dst=cv2.addWeighted(img1,0.7,img2,0.3,0)
cv2.waitKey(0)
cv2.destroyAllWindow()
按位运算
img1=cv2.imread('D:\BaiduNetdiskDownload\messi5.jpg')
img2=cv2.imread('D:\BaiduNetdiskDownload\opencv_logo.png')
rows,cols,channels=img2.shape
print(img1.shape)
print(img2.shape)
roi=img1[0:rows,0:cols]
cv2.imshow('roi',roi)
cv2.imshow('img1',img1)
img2gray=cv2.cvtColor(img2,cv2.COLOR_BGR2GRAY)
cv2.imshow('img2gray',img2gray)
ret,mask=cv2.threshold(img2gray,175,255,cv2.THRESH_BINARY)
mask_inv=cv2.bitwise_not(mask)
cv2.imshow('mask_inv',mask_inv)
img1_bg = cv2.bitwise_and(roi, roi, mask=mask_inv)
cv2.imshow('img1_bg',img1_bg)
img2_fg=cv2.bitwise_and(img2,img2,mask=mask_inv)
dst=cv2.add(img1_bg,img2_fg)
img1[0:rows,0:cols]=dst
cv2.waitKey(0)
cv2.destroyAllWindows()
颜色替换 cv2.floodFill()
'''
def fill_color_demo(image):
copyImg=image.copy()
h,w=image.shape[:2]
mask=np.zeros([h+2,w+2],np.uint8)
cv2.floodFill(copyImg,mask,(30,30),(0,255,255),(100,100,100),(50,50,50),cv2.FLOODFILL_FIXED_RANGE)
cv2.imshow('fill_binary',copyImg)
fill_color_demo(img)
def fill_binary():
image = np.zeros([400, 400, 3], np.uint8)
image[100:300, 100:300, :] = 255
cv2.imshow("fill_binary", image)
mask = np.ones([402, 402, 1], np.uint8)
mask[101:301, 101:301] = 0
cv2.floodFill(image, mask, (100, 100), (100, 2, 255), cv2.FLOODFILL_MASK_ONLY)
cv2.imshow("filled binary", image)
fill_binary()