news 2026/11/6 7:30:27

OpenCV 高级 001-图像修复

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
OpenCV 高级 001-图像修复
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 效果较好

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/11/6 7:29:34

996引擎 -地图-添加安全区+回城点

996引擎 -地图-添加安全区+回城点 文件位置 配置 cfg_startpoint.xls 特效效果 1 3 4 5 回城卷的规则 参考资料 文件位置 文件 位置 服务端 D:\996M2-lua\MirServer-lua\Mir200 客户端 D:\996M2-lua\996M2_debug\dev 配置 cfg_startpoint.xls 服务端\Mir200\Envir\DATA\cfg_st…

作者头像 李华
网站建设 2026/11/6 7:25:12

嵌入式内存管理实战指南:从分配到排查OOM

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/11/6 7:23:49

高精度ADC硬件电路设计:参数耦合与系统级精度实现

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/11/6 7:21:51

OPC DA客户端开发避坑指南:DCOM配置、远程连接与错误码排查

简介:这是一份面向工业自动化与嵌入式开发者的OPC DA客户端C/C开发工具包,聚焦远程及本地OPC服务器连接功能实现,适用于具备Windows平台C开发经验、需快速集成OPC通信能力的工程师。资源包含32个文件,涵盖14个头文件(如…

作者头像 李华
网站建设 2026/11/6 7:17:18

软件测试方法论与工程实践全解析

1. 软件测试在系统架构中的核心地位作为一名经历过多次软件项目实战的架构师,我深刻体会到软件测试绝非简单的"找bug"环节。在系统架构设计阶段,测试策略的规划直接影响着系统的可维护性和扩展性。记得去年负责的某金融系统重构项目&#xff0…

作者头像 李华
网站建设 2026/11/6 7:17:18

深入解析Socket编程与TCP/UDP协议实践

1. Socket编程基础概念解析1.1 网络通信的本质在Linux系统中,网络通信的核心是将数据准确送达目标主机的特定进程。很多人误以为网络通信只是主机间的数据传输,实际上这只是手段而非目的。就像我们寄快递时,仅仅把包裹送到收件人所在的城市是…

作者头像 李华