1.算法原理: 对高光部位应该先检测,后用图像增强的办法去除高光,想办法用周围的色素值代替,本文采用图像修复的方法。
2. 算法步骤:
1.图像阈分割生成mask掩膜
2.opencv自带的图像修复函数,如下:

cv2.inpaint(src, inpaintMask, 3, cv2.INPAINT_TELEA)
src:目标修复图像;
inpaintMask:蒙版图(定位修复区域);
3:选取邻域半径;
cv2.INPAINT_TELEA:修复算法(INPAINT_TELEA:基于快速行进算法 算法效果较好
INPAINT_NS:基于流体动力学并使用了偏微分方程)

测试图片:

生成的mask图片:

最终的结果:

实现的代码:

import  cv2
import os,shutil
#找亮光位置
def create_mask(imgpath):image = cv2.imread(imgpath, cv2.IMREAD_GRAYSCALE)_, mask = cv2.threshold(image, 200, 255, cv2.THRESH_BINARY)return mask
#修复图片
def xiufu(imgpath,maskpath):src_ = cv2.imread(imgpath)mask = cv2.imread(maskpath, cv2.IMREAD_GRAYSCALE)#缩放因子(fx,fy)res_ = cv2.resize(src_,None,fx=0.6, fy=0.6, interpolation = cv2.INTER_CUBIC)mask = cv2.resize(mask,None,fx=0.6, fy=0.6, interpolation = cv2.INTER_CUBIC)dst = cv2.inpaint(res_, mask, 10, cv2.INPAINT_TELEA)return dstif __name__=='__main__':rootpath = r"E:\data_set\img"masksavepath=r"E:\data_set\mask"savepath = r"E:\data_set\wcp\result"imgfiles = os.listdir(rootpath)for i in range(0, len(imgfiles)):path = os.path.join(rootpath, imgfiles[i])print(imgfiles[i])if os.path.isfile(path):if (imgfiles[i].endswith("jpg") or imgfiles[i].endswith("JPG")):maskpath =os.path.join(masksavepath, "mask_"+imgfiles[i])cv2.imwrite(maskpath, create_mask(path))dst=xiufu(path,maskpath)newname = 'xiufu_' + imgfiles[i].split(".")[0]cv2.imwrite(os.path.join(savepath, newname + ".jpg"), dst)shutil.copyfile(os.path.join(rootpath, imgfiles[i].split(".")[0] + ".xml"),os.path.join(savepath, newname + ".xml"))

相关文献:
https://blog.csdn.net/song_esther/article/details/80157900

图像增强:opencv去除图片的高光相关推荐

  1. opencv去除图片的高光

    opencv去除图片的高光 有明显的修补痕迹 https://blog.csdn.net/qq_43555843/article/details/102510425 参考这个: https://blo ...

  2. Python OpenCV去除图片水印

    问题描述 去除百度水印 1.jpg,背景简单 2.jpg,背景复杂 解决方案 安装 pip install opencv-python pip install numpy 方法一.OpenCV提取颜色 ...

  3. python利用opencv去除图片logo_python 基于opencv去除图片阴影

    一.前言 如果你自己打印过东西,应该有过这种经历.如果用自己拍的图片,在手机上看感觉还是清晰可见,但是一打印出来就是漆黑一片.比如下面这两张图片: 因为左边的图片有大片阴影,所以打印出来的图片不堪入目 ...

  4. matlab去除图片水印_Python利用OpenCV去除图片水印

    点击上方"何俊林",马上关注,每天早上8:50准时推送 真爱,请置顶或星标 这两天公司来了一个新的需求--去除水印,对于我一个从未接触过的这种事情的人来说,当时我是蒙的.不过首先我 ...

  5. Python利用OpenCV去除图片水印

    点击上方"何俊林",马上关注,每天早上8:50准时推送 真爱,请置顶或星标 这两天公司来了一个新的需求--去除水印,对于我一个从未接触过的这种事情的人来说,当时我是蒙的.不过首先我 ...

  6. opencv去除图片水印

    效果图胜过文字说明 处理前 处理后 代码部分: #include <iostream> #include<opencv2\opencv.hpp> #include <op ...

  7. python利用opencv去除图片logo_利用python和opencv批量去掉图片黑边

    import os import cv2 import numpy as np from scipy.stats import mode import time import concurrent.f ...

  8. python 去除水印_python 利用opencv去除图片水印

    $(function () { changeIndReadCommentStyle(); //返回顶部 $('#back-to-top').click(function (e) { $('html,b ...

  9. 基于Python实现网页版去水印之去除图片右下角水印

    基于Python实现网页版去图片右下角水印 Python可以用OpenCV去除图片水印,但如何结合web框架去实现网页版去水印,带着这样的疑问,我搜索研究了一下,发现是完全可以实现的,而且考虑到部署服 ...

最新文章

  1. 2021年大数据Flink(十四):流批一体API Connectors JDBC
  2. 模拟真机环境_QFramework 使用指南 2020(八):Res Kit(2)模拟模式与非模拟模式...
  3. Python中如何拷贝一个对象?(赋值、深拷贝、浅拷贝的区别)
  4. mysql分区字段创建索引_MySQL分区字段列有必要再单独建索引吗?
  5. xcart-子分类/语言不显示
  6. CRM Fiori Application opptListRefreshed
  7. Java IO: 异常处理
  8. java求数组和值_用java编写数组求和,array[]和ArrayList()?
  9. 【Android】Scrollview返回顶部,快速返回顶部的功能实现,详解代码。
  10. PHP EOF使用方法
  11. 【2019杭电多校第五场1002=HDU6625】three arrays(01字典树+思维+贪心)
  12. Linux电源管理(3)-Generic PM之reboot过程【转】
  13. 用Java实现圆锥的体积公式_圆锥的体积公式及其推导
  14. nginx配置ssl证书
  15. 一步步学习k8s(二)
  16. 苹果app退款_苹果app退款流程:App Store应用如何申请iOS退款教程
  17. react全局状态管理_Recoil - Facebook 官方 React 状态管理器
  18. 详讲全排列算法,及解决数字搭积木问题
  19. Vue3 Echarts散点图+高德地图+卫星地图(一)——获取高德地图API
  20. 数学速算法_小数减法如何学?3种心算速算法,快捷有效,让孩子爱上数学

热门文章

  1. oracle rman crosscheck,rman 之crosscheck 与delete expired
  2. 歌手详情页:下拉方大歌手图片
  3. 面向对像(8day) 正则表达式,日志格式,json模块
  4. Win7环境下硬盘安装XP(无光驱/光盘安装XP)
  5. ksql整合debezium创建连接器出现500
  6. RationalDMIS 7.0量块程序(力合)
  7. 洛谷P1008 [NOIP1998 普及组] 三连击题解
  8. 【解决问题】修复虚拟机报错,写入文件时出错,请确认您有访问该目录的权限
  9. Android版本+pwa,微博pwa版本下载
  10. 支持多线程编程的Web Workers