zl程序教程

您现在的位置是:首页 >  后端

当前栏目

OpenCV这么简单为啥不学——1.13图片冷白皮(美白)处理

Opencv 处理 简单 图片 这么 为啥 1.13
2023-09-14 09:14:15 时间

OpenCV这么简单为啥不学——1.13图片冷白皮(美白)处理


目录

OpenCV这么简单为啥不学——1.13图片冷白皮(美白)处理

前言

分析

核心代码

颜色美白前后对比·20个单位

颜色美白前后对比·40个单位

颜色美白前后对比·80个单位

示例源码


前言

计算机视觉市场巨大而且持续增长,且这方面没有标准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)

我给的示例很直接,希望能直接给予到你帮助。