opencv通过灰度图和阀值,过滤掉铅笔的痕迹。使用提取红色通道及阀值,过滤掉红色的批改痕迹。再将两个图做一次“或”,就实现去掉印章和笔迹了。
#!/usr/local/python3/bin/python3
# -*- coding: utf-8 -*
# -*- encoding: utf-8 -*-
import cv2
import numpy as np
class SealRemove(object):
def remove_red_seal(self, image):
# 获得红色通道
blue_c, green_c, red_c = cv2.split(image)
# 多传入一个参数cv2.THRESH_OTSU,并且把阈值thresh设为0,算法会找到最优阈值
thresh, ret = cv2.threshold(red_c, 210, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)
# 实测调整为95%效果好一些
filter_condition = int(thresh * 0.99)
nominator_thresh, red_thresh = cv2.threshold(red_c, filter_condition, 255, cv2.THRESH_BINARY)
return red_thresh
def shijuanqingli(self, image):
# img = cv2.imread(image, 0)
thresh, dst1 = cv2.threshold(image,210, 255, cv2.THRESH_BINARY)
dst1_without_pen = dst1
return dst1_without_pen
def join_image(self, img_without_red, dst1_without_pen):
ret = cv2.bitwise_or(img_without_red, dst1_without_pen)
return ret
if __name__ == '__main__':
src = r'/data/wwwroot/default/asset/testsign2.png'
image0 = cv2.imread(src)
seal_rm = SealRemove()
image_0 = seal_rm.remove_red_seal(image0)
# image_0_1 = cv2.cvtColor(image_0, cv2.COLOR_BGR2GRAY)
print("<img src='/asset/testsign2.png' />")
image1 = cv2.imread(src, 0)
image_1 = seal_rm.shijuanqingli(image1)
image_result = seal_rm.join_image(image_0, image_1)
# cv2.imshow('new image', image_result)
#cv2.waitKey(0)
#cv2.destroyAllWindows()
#src_temp = src.split(r'.')
src_result = '/data/wwwroot/default/Data/newsign.png'
cv2.imwrite(src_result,image_result)
print("<img src='/Data/newsign.png' />")
网友回复
webpack打包的网页如何通过ai还原源码成单一html代码?
如何将一个任意url的在线网页的html代码及css、js代码输出成一个文本块中?
PyWebIO、Gradio、Streamlit、NiceGUI怎么选择?
如何从视频中直接解析人物动作捕获数据?
openai发布的agentkit与coze扣子、dify等流程搭建智能体有啥不同?
阿里云上的ecs镜像存储还要钱,如何免费下载到本地以后再创建?
如何通过调用大模型api实现输入一个商品图片生成模特展示解说的宣传短片?
qwen千问大模型api如何内置互联网搜索?
YOLO如何结合opencv实现视觉实时摔倒检测?
html中内嵌style与link引入css代码报错的处理机制不同?