OpenCV这么简单为啥不学——1.13图片冷白皮(美白)处理
前言
计算机视觉市场巨大而且持续增长,且这方面没有标准API,如今的计算机视觉软件大概有以下三种:
1、研究代码(慢,不稳定,独立并与其他库不兼容)
2、耗费很高的商业化工具(比如Halcon, MATLAB+Simulink)
3、依赖硬件的一些特别的解决方案(比如视频监控,制造控制系统,医疗设备)这是如今的现状,而标准的API将简化计算机视觉程序和解决方案的开发,OpenCV致力于成为这样的标准API。
OpenCV致力于真实世界的实时应用,通过优化的C代码的编写对其执行速度带来了可观的提升,并且可以通过购买Intel的IPP高性能多媒体函数库(Integrated Performance Primitives)得到更快的处理速度。
故而我们选择学习OpenCV,我们来一步步的学习OpenCV。
很多图片光线不是很好,所以我们需要单独去美白一下。
我们先用一张图片来看一下效果:
黑色图片
分析
我们这里分为(r,g,b)来进行分析,它们的色值范围都是255,也就可以理解成(255,255,255),那么我们都知道#ffffff是【白色】,那么越趋近于这个数值也就越接近白色,我们在原来颜色的基础上都加上一定的数值,例如20~50,但是这个值一定要小于255,那么对应每个像素点的颜色就会相对应的增白,接下来我们进行具体测试。
核心代码
就是遍历的过程中每个点都增强一下颜色。
value = 50 # 增强20个单位 for i in range(w): for j in range(h): (b, g, r) = img[i, j] b = min(255, b + value) g = min(255, g + value) r = min(255, r + value) img[i, j] = (b, g, r)
颜色美白前后对比·20个单位
增白强度不足,我们更换成40来试一试。
颜色美白前后对比·40个单位
相对来数白的就很多了,我们再次加大强度试一试。
颜色美白前后对比·80个单位
80个单位,这回就更白了。
示例源码
import cv2 img = cv2.imread("black.png") # 显示老图片用于对比 cv2.imshow('old', img) w, h, d = img.shape value = 80 # 增强20个单位 for i in range(w): for j in range(h): (b, g, r) = img[i, j] b = min(255, b + value) g = min(255, g + value) r = min(255, r + value) img[i, j] = (b, g, r) # 显示新图片 cv2.imshow('show', img) cv2.waitKey(0)
我给的示例很直接,希望能直接给予到你帮助。