当前位置: 首页 > 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图的成像了。

相关文章:

  • 【Code】Foundations 2017- Catalogue, List of Tables, List of Figures
  • iOS Runtime与RunLoop的对比和使用
  • Journal of Real-Time Image Processing 投稿过程
  • 区域双碳治理:数据驱动与系统破局之道
  • 2.4.1死锁的概念
  • 计算机网络通信技术与协议(七)———关于ACL的详细解释
  • 迪菲-赫尔曼密钥交换算法深度解析
  • 重构研发效能:项目管理引领软件工厂迈向智能化
  • 第二届帕鲁杯screenshot
  • 【Linux】第二十一章 管理存储堆栈
  • 三视图dxf 生成brep 3d图重建 pythonocc solid
  • 适合初学者的机器学习路线图
  • SpringBootDay1|面试题
  • NC65联查单据问题总结
  • 电子电路:什么是射极电阻?
  • 汉语词汇的神奇拼图:关联性的魅力
  • C++数据结构——红黑树
  • 25-CAN总线
  • Python60日基础学习打卡D31
  • 集星獭 | 重塑集成体验:新版编排重构仿真电商订单数据入库
  • 洋山特殊综合保税区累计进出口货值超1万亿元
  • 北证50年内涨超42%,创历史新高!后市机构怎么看?
  • 媒体刊文:“假官号”层出不穷,平台要当好把关人
  • 小满:一庭栀子香
  • 河北省纪委原副书记、省监委原副主任陈玉祥一审获刑十二年
  • 香港油麻地旧警署将向游客开放