当前位置: 首页 > news >正文

海康工业相机白平衡比选择器对应的值被重置后,如何恢复原成像

做项目的时候,有时候手抖,一不小心把一个成熟稳定的项目的相机配置,重置了,如何进行恢复呢,在不知道之前配置数据的情况下。

我在做项目的时候,为了让这个相机成像稳定一点,尤其是做颜色检测时,如果自动白平衡打开,会因为环境问题,光线波动,导致这个成像颜色波动,尤其是做颜色检测的时候,所以一般我都会把这个白平衡关掉,然后单独对红绿蓝三个通道去设置相应的值,调好了成像后,后面识别的时候,识别颜色的阈值就和当前的成像保持着关联,一但成像变化大了,就可能导致之前的颜色阈值不适配了,导致颜色识别错误。

今天没事的时候就会对着这个工业相机软件乱点乱看,就不小心把之前配置的参数重置了。成像发生变化后,如果不想改变算法,就要尽量配置参数让其更接近原先的成像。

首先:要需要两张图,一张图简称1图,第二张图简称2图

1图是原先的图,在参数未被重置时候,之前保存下的图

2图是重置参数后的图

此外如果画面目标变化了,我们要截取到一个不变区域,通过这个区域的颜色对比来计算。

其次:要知道重置后,当前图的白平衡对应的红绿蓝三个值

准备就绪后,上代码:

import cv2
import numpy as np
# 根据已有两张图1和2,还有2图对应的白平衡值,来求1图的白平衡值def calculate_white_balance(image1_path, image2_path, reference_wb):# 读取两张图像img1 = cv2.imread(image1_path)img2 = cv2.imread(image2_path)if img1 is None:raise Exception(f"无法读取图像: {image1_path}")if img2 is None:raise Exception(f"无法读取图像: {image2_path}")# 将图像转换为浮点数类型img1_float = img1.astype(np.float32)img2_float = img2.astype(np.float32)# 计算两张图像每个通道的平均值avg1_b = np.mean(img1_float[:, :, 0])avg1_g = np.mean(img1_float[:, :, 1])avg1_r = np.mean(img1_float[:, :, 2])avg2_b = np.mean(img2_float[:, :, 0])avg2_g = np.mean(img2_float[:, :, 1])avg2_r = np.mean(img2_float[:, :, 2])# 使用参考白平衡值ref_r, ref_g, ref_b = reference_wb# 计算两张图像之间的比例关系ratio_r = avg1_r / avg2_rratio_g = avg1_g / avg2_gratio_b = avg1_b / avg2_b# 计算1.jpg的白平衡值wb_r = int(ref_r * ratio_r)wb_g = int(ref_g * ratio_g)wb_b = int(ref_b * ratio_b)return wb_r, wb_g, wb_bdef main():# 参考图像的白平衡值reference_wb = (1360, 1124, 2110)  # (R, G, B)try:# 计算1.jpg的白平衡值wb_r, wb_g, wb_b = calculate_white_balance("1.png", "2.png", reference_wb)print(f"1.jpg的白平衡值:")print(f"R: {wb_r}")print(f"G: {wb_g}")print(f"B: {wb_b}")except Exception as e:print(f"错误: {str(e)}")if __name__ == "__main__":main()

输出结果:

1.jpg的白平衡值:
R: 1552
G: 1268
B: 2045

把这个值配置到白平衡对应的红绿蓝值即可,图像又恢复成1图的成像了。

http://www.xdnf.cn/news/547057.html

相关文章:

  • 【Unity】DOTween的常用函数解释
  • Java 大视界——Java大数据在智慧交通智能停车诱导系统中的数据融合与实时更新
  • 【数据结构】队列的完整实现
  • 五:操作系统内存管理之连续内存分配
  • 机器学习10-随机森林
  • 解决将cpp编译为dll,使用ctype的cdll调用,printf不输出在终端
  • 算法与数据结构:位运算与快速幂
  • 地理信息数据格式.GeoJSON数据格式介绍
  • 无人机避障——深蓝学院浙大Fast-planner学习部分(采用均匀B-Spline和非均匀B-Spline进行轨迹优化和时间重分配)
  • 力扣-盛最多水的容器
  • 网络刷卡器的分类和网口通讯流程
  • hghac集群服务器时间同步(chrony同步)
  • 替换word中的excel
  • 【25软考网工】第七章 (2)UOS Linux文件和目录管理、用户和组管理
  • 音频应用的MediaSession冲突
  • Transfomer学习
  • Java NIO(New I/O)
  • ubuntu kubeasz 部署高可用k8s 集群
  • k8s1.27版本集群部署minio分布式
  • 01 基本介绍及Pod基础
  • 【DCGMI专题1】---DCGMI 在 Ubuntu 22.04 上的深度安装指南与原理分析(含架构图解)
  • 深度学习架构快速入门——卷积神经网络CNN、循环神经网络RNN、生成对抗网络GAN、Transformer以及编码器-解码器
  • Jenkins:自动化之魂,解锁高效开发的密钥
  • 2025-05-20 模型下载--文本向量化--Faiss检索
  • SQLMesh 内置宏详解:@PIVOT等常用宏的核心用法与示例
  • Qt文件:XML文件
  • 战略游戏--树形dp
  • Java中字符串(String类)的常用方法
  • 如何使用MATLAB NLP工具箱进行文本聚类
  • notepad++