importcv2importmatplotlib.pyplotasplt plt.rcParams["font.family"]=["Microsoft JhengHei"]lisa=cv2.imread('comeERR.jpg')ret,mask=cv2.threshold(lisa,200,255,cv2.THRESH_BINARY)# mask处理, 适度增加要处理的表面kernal=cv2.getStructuringElement(cv2.MORPH_RECT,(3,3))mask=cv2.dilate(mask,kernal)dst=cv2.inpaint(lisa,mask[:,:,-1],5,cv2.INPAINT_NS)# 输出执行结果lisa_rgb=cv2.cvtColor(lisa,cv2.COLOR_BGR2RGB)# 将BGR转RGBmask_rgb=cv2.cvtColor(mask,cv2.COLOR_BGR2RGB)# 将BGR转RGBdst_rgb=cv2.cvtColor(dst,cv2.COLOR_BGR2RGB)# 将BGR转RGBplt.subplot(131)plt.title("原始图像")plt.imshow(lisa_rgb)plt.axis('off')plt.subplot(132)plt.title("Mask图像")plt.imshow(mask_rgb)plt.axis('off')plt.subplot(133)plt.title("图像修复结果")plt.imshow(dst_rgb)plt.axis('off')plt.show()结果:
如果背景图与涂鸦颜色相差较大就需要使用 cv2.THRESH_TOZERO_INV
对比下
THRESH_BINARY
importcv2importmatplotlib.pyplotasplt plt.rcParams["font.family"]=["Microsoft JhengHei"]lisa=cv2.imread('comeTest.jpg')# lisa = cv2.imread('part.png')ret,mask=cv2.threshold(lisa,180,255,cv2.THRESH_BINARY)# ret, mask = cv2.threshold(lisa, 40, 255, cv2.THRESH_TOZERO_INV)# mask处理, 适度增加要处理的表面kernal=cv2.getStructuringElement(cv2.MORPH_RECT,(3,3))mask=cv2.dilate(mask,kernal)dst=cv2.inpaint(lisa,mask[:,:,-1],5,cv2.INPAINT_NS)# 输出执行结果lisa_rgb=cv2.cvtColor(lisa,cv2.COLOR_BGR2RGB)# 将BGR转RGBmask_rgb=cv2.cvtColor(mask,cv2.COLOR_BGR2RGB)# 将BGR转RGBdst_rgb=cv2.cvtColor(dst,cv2.COLOR_BGR2RGB)# 将BGR转RGBplt.subplot(131)plt.title("原始图像")plt.imshow(lisa_rgb)plt.axis('off')plt.subplot(132)plt.title("Mask图像")plt.imshow(mask_rgb)plt.axis('off')plt.subplot(133)plt.title("图像修复结果")plt.imshow(dst_rgb)plt.axis('off')plt.show()结果:THRESH_TOZERO_INV
importcv2importmatplotlib.pyplotasplt plt.rcParams["font.family"]=["Microsoft JhengHei"]lisa=cv2.imread('comeTest.jpg')# lisa = cv2.imread('part.png')# ret, mask = cv2.threshold(lisa, 180, 255, cv2.THRESH_BINARY)ret,mask=cv2.threshold(lisa,45,255,cv2.THRESH_TOZERO_INV)# mask处理, 适度增加要处理的表面kernal=cv2.getStructuringElement(cv2.MORPH_RECT,(3,3))mask=cv2.dilate(mask,kernal)dst=cv2.inpaint(lisa,mask[:,:,-1],5,cv2.INPAINT_NS)# 输出执行结果lisa_rgb=cv2.cvtColor(lisa,cv2.COLOR_BGR2RGB)# 将BGR转RGBmask_rgb=cv2.cvtColor(mask,cv2.COLOR_BGR2RGB)# 将BGR转RGBdst_rgb=cv2.cvtColor(dst,cv2.COLOR_BGR2RGB)# 将BGR转RGBplt.subplot(131)plt.title("原始图像")plt.imshow(lisa_rgb)plt.axis('off')plt.subplot(132)plt.title("Mask图像")plt.imshow(mask_rgb)plt.axis('off')plt.subplot(133)plt.title("图像修复结果")plt.imshow(dst_rgb)plt.axis('off')plt.show()
黑色(像素值较小)涂鸦 用 THRESH_TOZERO_INV 效果较好
像素值较大 涂鸦 用 THRESH_BINARY 效果较好