【OpenCV实现图像:用OpenCV图像处理技巧之白平衡算法】_opencv 白平衡-程序员宅基地

技术标签: 2024年程序员学习  算法  图像处理  opencv  

先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Linux运维全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
img
img
img
img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上运维知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

如果你需要这些资料,可以添加V获取:vip1024b (备注运维)
img

正文

# 导入必要的Python库
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from skimage import io, img_as_ubyte
from skimage.io import imread, imshow
from matplotlib.patches import Rectangle

# 加载样例图像
from skimage import io
import matplotlib.pyplot as plt

# 读取图像文件
image = io.imread(r'E:\yolo项目\Opencv-project-main\Opencv-project-main\CVZone\img.png')

# 显示原始图像
plt.figure(figsize=(10,10))
plt.title('Original Image')  # 设置图像标题
plt.imshow(image)  # 显示图像
plt.show()  # 显示图像


结果:
在这里插入图片描述

统计数据分析

# 导入必要的Python库
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from skimage import io, img_as_ubyte
from skimage.io import imread, imshow
from matplotlib.patches import Rectangle

# 加载样例图像
from skimage import io
import matplotlib.pyplot as plt

# 读取图像文件
image = io.imread('qmark.png')

# 显示原始图像
plt.figure(figsize=(10,10))
plt.title('Original Image')  # 设置图像标题
plt.imshow(image)  # 显示图像
plt.show()  # 显示图像

# 分析图像中的统计信息
def calc_color_overcast(image):
    # 计算每个通道的颜色偏差
    red_channel = image[:, :, 0]  # 红色通道
    green_channel = image[:, :, 1]  # 绿色通道
    blue_channel = image[:, :, 2]  # 蓝色通道

    # 创建一个DataFrame来存储结果
    channel_stats = pd.DataFrame(columns=['Mean', 'Std', 'Min', 'Median', 'P\_80', 'P\_90', 'P\_99', 'Max'])

    # 计算并存储每个颜色通道的统计信息
    for channel, name in zip([red_channel, green_channel, blue_channel], ['Red', 'Green', 'Blue']):
        mean = np.mean(channel)  # 平均值
        std = np.std(channel)  # 标准差
        minimum = np.min(channel)  # 最小值
        median = np.median(channel)  # 中位数
        p_80 = np.percentile(channel, 80)  # 80th百分位数
        p_90 = np.percentile(channel, 90)  # 90th百分位数
        p_99 = np.percentile(channel, 99)  # 99th百分位数
        maximum = np.max(channel)  # 最大值

        # 将统计信息存储到DataFrame中
        channel_stats.loc[name] = [mean, std, minimum, median, p_80, p_90, p_99, maximum]

    return channel_stats
# 计算颜色通道的统计信息
channel_stats = calc_color_overcast(image)

# 打印统计信息
print(channel_stats)

定义了一个函数 calc_color_overcast(image),该函数用于计算图像中每个颜色通道(红色、绿色、蓝色)的统计信息,包括均值、标准差、最小值、中位数、80th、90th、99th 百分位数以及最大值。这些信息对于分析图像的颜色特性非常有用。

结果:
在这里插入图片描述

White Patch Algorithm

白色补丁算法是图像处理中常用的一种颜色平衡方法。其目标是通过缩放图像的颜色通道,使得每个通道中最亮的像素变为白色。这一方法基于假设:图像中最亮的像素应当代表白色。通过调整每个通道的亮度,算法可以校正图像的颜色投射,实现图像的白平衡。

# 导入必要的Python库
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from skimage import io, img_as_ubyte
from skimage.io import imread, imshow
from matplotlib.patches import Rectangle

# 加载样例图像
from skimage import io
import matplotlib.pyplot as plt

# 读取图像文件




def white_patch(image, percentile=100):
    """
    Returns a plot comparison of original and corrected/white balanced image
    using the White Patch algorithm.

    Parameters
    ----------
    image : numpy array
            Image to process using white patch algorithm
    percentile : integer, optional
                  Percentile value to consider as channel maximum
    """
    white_patch_image = img_as_ubyte(
        (image * 1.0 / np.percentile(image,
                                     percentile,
                                     axis=(0, 1))).clip(0, 1))
    # Plot the comparison between the original and white patch corrected images
    fig, ax = plt.subplots(1, 2, figsize=(10, 10))
    ax[0].imshow(image)
    ax[0].set_title('Original Image')
    ax[0].axis('off')

    ax[1].imshow(white_patch_image, cmap='gray')
    ax[1].set_title('White Patch Corrected Image')
    ax[1].axis('off')

    plt.show()

# Read the input image
image = imread(r'E:\yolo项目\Opencv-project-main\Opencv-project-main\CVZone\img.png')

# Call the function to implement white patch algorithm
white_patch(image, 100)

在这里插入图片描述
使用默认参数percentile=100并没有明显改善图像,因为图像中RGB通道的最大值已经是[255, 255, 255]。通过观察前一章节中的统计信息,我们可以看到RGB通道的最大值和99百分位数都是255。

为了解决这个问题,我们可以考虑将像素值的较低百分位数视为最大值,而不是绝对的最大值。

为了做好运维面试路上的助攻手,特整理了上百道 【运维技术栈面试题集锦】 ,让你面试不慌心不跳,高薪offer怀里抱!

这次整理的面试题,小到shell、MySQL,大到K8s等云原生技术栈,不仅适合运维新人入行面试需要,还适用于想提升进阶跳槽加薪的运维朋友。

本份面试集锦涵盖了

  • 174 道运维工程师面试题
  • 128道k8s面试题
  • 108道shell脚本面试题
  • 200道Linux面试题
  • 51道docker面试题
  • 35道Jenkis面试题
  • 78道MongoDB面试题
  • 17道ansible面试题
  • 60道dubbo面试题
  • 53道kafka面试
  • 18道mysql面试题
  • 40道nginx面试题
  • 77道redis面试题
  • 28道zookeeper

总计 1000+ 道面试题, 内容 又全含金量又高

  • 174道运维工程师面试题

1、什么是运维?

2、在工作中,运维人员经常需要跟运营人员打交道,请问运营人员是做什么工作的?

3、现在给你三百台服务器,你怎么对他们进行管理?

4、简述raid0 raid1raid5二种工作模式的工作原理及特点

5、LVS、Nginx、HAproxy有什么区别?工作中你怎么选择?

6、Squid、Varinsh和Nginx有什么区别,工作中你怎么选择?

7、Tomcat和Resin有什么区别,工作中你怎么选择?

8、什么是中间件?什么是jdk?

9、讲述一下Tomcat8005、8009、8080三个端口的含义?

10、什么叫CDN?

11、什么叫网站灰度发布?

12、简述DNS进行域名解析的过程?

13、RabbitMQ是什么东西?

14、讲一下Keepalived的工作原理?

15、讲述一下LVS三种模式的工作过程?

16、mysql的innodb如何定位锁问题,mysql如何减少主从复制延迟?

17、如何重置mysql root密码?

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注运维)
img

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注运维)
[外链图片转存中…(img-qaIuAJC4-1713461987540)]

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/2401_83945997/article/details/137943902

智能推荐

【图示使用】doxygen+graphviz_qt 怎么没有 doxygen插件-程序员宅基地

文章浏览阅读598次。1、问题:拿到一大段项目代码怎么看?!2、解决方案:使用工具生成函数调用链图,帮助分析整个项目方法的用法以及功能3、工具简介:(安装此两种工具,然后可以方便的分析代码,生成相应的函数调用图)doxygen:(http://www.stack.nl/~dimitri/doxygen/index.html)graphviz:(http://www.graphviz.org/)3.0、打开DoxyWizard时,如果弹出“打不开 XXX,因为它来自身份不明的开发者”请进入如下网址寻找解决办法http:_qt 怎么没有 doxygen插件

js的常见写法技巧-程序员宅基地

文章浏览阅读104次。Javascript练习题正则表达式验证邮箱摘要: View Code <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3..._js 写法技巧

vnc远程连接ubuntu,vnc远程连接ubuntu教程图解_vncuxq-程序员宅基地

文章浏览阅读1.1k次。Ubuntu Linux是由南非人马克·沙特尔沃思(Mark Shuttleworth)创办的基于Debian Linux的操作系统,Ubuntu几乎包含了所有常用的应用软件:文字处理、电子邮件、软件开发工具和Web服务等。用户下载、使用、分享Ubuntu系统,以及获得技术支持与服务,无需支付任何许可费用。那如何实现vnc远程连接ubuntu呢?如图:(官网:IIS7服务器管理工具)IIS7服务器管理工具能实现一键导出或导入,一键批量打开VNC,一键批量关闭VNC,服务器到期提醒,支持多台V_vncuxq

windows上搭建NFS服务器--haneWIN,Linux客户端挂载_hanewin 1.1.69-程序员宅基地

文章浏览阅读2w次。在进行嵌入式开发时常常需要在板子上用nfs挂载宿电脑,公司现在的架构是远程服务器加windows个人电脑,因此需要在个人电脑的windows系统上搭建NFS服务器。一、windows上搭建NFS服务器NFS服务器软件:haneWIN 1.1.69 汉化已注册的版本互联网上有下载,我这里再放一个我上传到CSDN的链接。https://download.csdn.net/download/z..._hanewin 1.1.69

Flutter 数据存储--shared_preferences使用详情-程序员宅基地

文章浏览阅读5.7k次,点赞3次,收藏17次。shared_preferences,Flutter中数据本地存储_shared_preferences

QML----StackView动画_qml stackview动画-程序员宅基地

文章浏览阅读1.7k次。废话不多说,直接上代码(这里是渐入溅出)StackView{ objectName: "rootStack" id:stackView initialItem: spalsh anchors.fill: parent replaceEnter: Transition { PropertyAnimation { target: stackView property: ..._qml stackview动画

随便推点

安装配置Visual Studio Code Kubernetes Tools_vscode visual studio k5-程序员宅基地

文章浏览阅读1w次,点赞3次,收藏11次。Visual Studio Code Kubernetes Tools1. vscode配置连通k8s1.1拿到k8s集群的配置文件信息1.2 vscode安装插件[Visual Studio Code Kubernetes Tools](https://marketplace.visualstudio.com/items?itemName=ms-kubernetes-tools.vscode-k..._vscode visual studio k5

pip安装命令_pipanzhuangming;-程序员宅基地

文章浏览阅读6.7k次,点赞2次,收藏8次。打开网址下载pip:https://pypi.org/project/pip/#files解压到你的anaconda包路径中,我的是下图:现在开始安装进入cmd之后,进入d盘:d:进入d盘之后cdD:\anaconda\Lib\site-packages\pip-19.0.3进入目录之后python setup.py install然后..._pipanzhuangming;

Cisco技术区常用配置实例整理----2010.11.1更新ing....-程序员宅基地

文章浏览阅读470次。网络地址转换(NAT)互联网如火如荼的应用,加剧了IP地址匮乏的问题,为了缓解这一问题,一个重要的应用:NAT(Network Address Translation―网络地址转换),日益广泛地应用起来。NAT通过地址转换的方式,使企业可以仅使用较少的互联网有效IP地址,就能获得互联网接入的能力,有效地缓解了地址不足的问题,同时提供了一定的安全性。 NAT的实..._rsa-encr和rsa-sig的区别

Linux grep命令详解-程序员宅基地

文章浏览阅读842次,点赞8次,收藏21次。Java架构进阶面试及知识点文档笔记这份文档共498页,其中包括Java集合,并发编程,JVM,Dubbo,Redis,Spring全家桶,MySQL,Kafka等面试解析及知识点整理Java分布式高级面试问题解析文档其中都是包括分布式的面试问题解析,内容有分布式消息队列,Redis缓存,分库分表,微服务架构,分布式高可用,读写分离等等!互联网Java程序员面试必备问题解析及文档学习笔记Java架构进阶视频解析合集《互联网大厂面试真题解析、进阶开发核心学习笔记、全套讲解视频、实战项目源码讲义》

贪心算法解决汽车加油问题_实验3.3 汽车加油问题 1、问题描述:一辆汽车加满油后可行驶nkm。旅途中有若干加油-程序员宅基地

文章浏览阅读1w次,点赞7次,收藏40次。问题描述:一辆汽车加满油后可行驶n公里。旅途中有若干个加油站。设计一个有效算法,指出应在哪些加油站停靠加油,使沿途加油次数最少。对于给定的n(n 在哪些加油站停靠加油,使沿途加油次数最少。对于给定的n(n 要求:输入:第一行有2个正整数n和k,表示汽车加满油后可行驶n公里,且旅途中有k个加油站。接下来的1 行中,有k+1 个整数,表示第k个加油站与第k-1 个加油站之间的距_实验3.3 汽车加油问题 1、问题描述:一辆汽车加满油后可行驶nkm。旅途中有若干加油

windows下使用makefile编译C语言.doc_windows编译c文件make-程序员宅基地

文章浏览阅读1.5w次。1. 准备工作:程序:MinGW-3.1.0-1.exe windows下的gcc,编译c语言的工具下载地址: http://umn.dl.sourceforge.net/sourceforge/mingw/MinGW-3.1.0-1.exe make 按照makefile规则编译程序的工具位置 :w_windows编译c文件make