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

举报
红目香薰 发表于 2023/03/23 22:32:47 2023/03/23
【摘要】 OpenCV这么简单为啥不学——1.13图片冷白皮(美白)处理 前言 分析 核心代码 颜色美白前后对比·20个单位 颜色美白前后对比·40个单位 颜色美白前后对比·80个单位 示例源码

 

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)

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

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。