对于调用海康相机的整个流程,下面的这个博客说的很详细了,我一开始也是看的这个

python调用海康工业相机并用opencv显示(整体实现)_J&A~ing的博客-CSDN博客_python调用海康工业相机

众所周知,MVS里面可以自己调整参数 ,例如曝光时间,增益等,点一下输一个值就能解决问题了。

但是如果我们想用自己打包的用户界面,让用户输入数值或者模式等,然后不经过MVS的点击操作直接改变。这种情况就需要我们自己写了。网上(以及帮助文档)有C++的参数获取案例,没办法我C++写的一般,本文用的是PyQt5+MV-CS060-GM10-PRO进行调用

C++调用的案例

海康工业相机参数设置与获取_青山笑我依旧在的博客-CSDN博客_海康工业相机参数设置


  1. 首先打开MVS,连接相机

既然要手调,那就必须要找到对应参数的名字才可以。阅读帮助文档可以知道有一系列方法,例如MV_CC_SetIntValue / MV_CC_SetEnumValue等,但是需要输入对应的参数键值

虽然文档里并没有写,但其实从MVS里是可以直接看到的,点击属性树(后面三个都不管用)。找到你想修改的值(英文)

比如说我想修改自动曝光模式,找到对应的一栏

可以看到第一行是键值,第二行是这里的数据类型(Enum),因此就要用Set(Get)EnumValue,下拉栏里是可选的值(off / once / continuous)。

如果换成曝光时间,也同理,只不过数据类型变成了Float。其他的都可以类推。

这个时候就可以进行对应的数值的获取和修改了。


2. 案例展示

口说无凭,也不好解释。我这里想达成的需求是,用户自己改变相机的曝光模式。三种分别为,手动调整曝光时间、自动曝光、自动曝光并且自动增益

cam是MvCamera()

  • 对于第一种情况,就很简单了 ,只有一个参数修改的指令
if self.exposure_mode.currentText() == '手动曝光(ms)':self.info_text.setText('曝光模式设置中...')  # info_text是我设置的一个状态信息栏,属于QLineEdittry:ans_exposure = float(self.exposure_time_text.text()) # 时间输入栏,setReadOnly==Falseexposure_time = ans_exposure * 1000except:exposure_time = self.exposure_time * 1000ret = cam.MV_CC_SetEnumValue('ExposureAuto', MV_EXPOSURE_AUTO_MODE_OFF)ret = cam.MV_CC_SetEnumValue('GainAuto', MV_GAIN_MODE_OFF)ret = cam.MV_CC_SetFloatValue("Gain", 0)ret = cam.MV_CC_SetFloatValue("ExposureTime", exposure_time)self.info_text.setText('曝光模式设置完成')time.sleep(1)

实现的就是输入浮点型的时间值然后赋值(这里我提前将自动模式调整为OFF,增益调整为0)。对于Set类方法,直接给值就行了(Get类是不行的,后面会讲到)

这里要注意,对于Enum的数据类型,在调用MV_CC_SetEnumValue时,第二个参数是要用SDK所给的属性的。如果你在开头把相关的文件都导进来了的话,IDE是会自己给你提醒的。就像这样

  • 对于第二种情况,存在Get指令,需要提前定义相关的结构体(不能用Python的数据类型)
elif self.exposure_mode.currentText() == '自动曝光':self.exposure_time_text.setReadOnly(True)self.info_text.setText('曝光模式设置中...')cnt_exposure_time = MVCC_FLOATVALUE()  # 定义专用数据类型memset(byref(cnt_exposure_time), 0, sizeof(MVCC_FLOATVALUE)) # 定义结构体ret = cam.MV_CC_SetFloatValue('Gain', 0)  # 增益归0ret = cam.MV_CC_SetEnumValue('ExposureAuto', MV_EXPOSURE_AUTO_MODE_CONTINUOUS)time.sleep(3)  # 别人文章的经验,自动曝光3秒后获得对应的值,即可关闭ret = cam.MV_CC_GetFloatValue("ExposureTime", cnt_exposure_time)  # 用这个特殊的数据结构获取值ret = cam.MV_CC_SetEnumValue('ExposureAuto', MV_EXPOSURE_AUTO_MODE_OFF)ret = cam.MV_CC_SetFloatValue("ExposureTime", cnt_exposure_time.fCurValue) #  fCurValue转换并赋值self.info_text.setText('曝光模式设置完成')time.sleep(1)

可以看出,Set和Get所接受值的数据类型是完全不一样的,需要特别注意 

  • 第三点同理,就不写注释了
elif self.exposure_mode.currentText() == '自动曝光+自动增益':self.exposure_time_text.setReadOnly(True)self.info_text.setText('曝光模式设置中...')cnt_exposure_time, cnt_gain_value = MVCC_FLOATVALUE(), MVCC_FLOATVALUE()memset(byref(cnt_exposure_time), 0, sizeof(MVCC_FLOATVALUE))memset(byref(cnt_gain_value), 0, sizeof(MVCC_FLOATVALUE))ret = cam.MV_CC_SetEnumValue('ExposureMode', MV_EXPOSURE_AUTO_MODE_CONTINUOUS)time.sleep(3)ret = cam.MV_CC_SetEnumValue('GainAuto', MV_GAIN_MODE_CONTINUOUS)time.sleep(3)ret = cam.MV_CC_GetFloatValue("ExposureTime", cnt_exposure_time)ret = cam.MV_CC_GetFloatValue("Gain", cnt_gain_value)ret = cam.MV_CC_SetEnumValue('GainAuto', MV_GAIN_MODE_OFF)ret = cam.MV_CC_SetEnumValue('ExposureAuto', MV_EXPOSURE_AUTO_MODE_OFF)ret = cam.MV_CC_SetFloatValue("ExposureTime", cnt_exposure_time.fCurValue)ret = cam.MV_CC_SetFloatValue("Gain", cnt_gain_value.fCurValue)self.info_text.setText('曝光模式设置完成')time.sleep(1)

python 海康工业相机二次开发 参数获取相关推荐

  1. (一)Qt+OpenCV调用海康工业相机SDK示例开发

    系列文章目录 提示:这里是该系列文章的所有文章的目录 第一章: (一)Qt+OpenCV调用海康工业相机SDK示例开发 第二章: (二)Qt多线程实现海康工业相机图像实时采集 文章目录 系列文章目录 ...

  2. 海康摄像头二次开发python_python实现海康sdk二次开发,移动侦测事件(一)

    1.概述 最近一段时间要从海康摄像头读取数据,作为程序的输入源,c++版本有海康有自己的demo,较为简单,很容易就实现了,但是为我们其他的程序都是基于python的,因此,需要使用Python调用海 ...

  3. 【海康摄像头二次开发】移植海康摄像头Android SDK并实现多屏显示

    文章目录 前言 一.看海康的例程 二.重要的函数分析 HCNetSDK PlayerSDK 三.移植 1.引入库 3.写一个设备信息管理的类 4.设备登录的类 5.视频显示的控件 6.通用的工具类 7 ...

  4. 海康摄像头二次开发详解,包含海康摄像头登录、海康云台控制、视频下载等功能

    海康摄像头二次开发详解 准备 海康摄像头SDK开发下载路径: 开发过程中遇到的问题记录: 添加maven依赖 下面代码中会出现的实体类 CameraManage实体类: ControlDto实体类: ...

  5. Python调用海康工业相机:包含相机参数修改、彩色原图显示(不失真)

    [引言] 海康相机作为目前工业检测.视觉定位等领域应用较为广泛的国产品牌相机,其搭配有一套专用视觉软件VM,而在完成具有复杂场景.复杂任务的科研项目时依靠其VM算法平台提供的视觉算法往往无法满足项目要 ...

  6. 海康摄像头二次开发python_海康摄像头的二次开发(java)

    海康摄像头的二次开发(java) 我第一次接触海康摄像头的二次开发的项目,一开始的时候摸不清套路,走了不少弯路,现在准备把我的一些经验留下来,让大家参考一下. 1.首先到海康的官网下载设备网络SDK: ...

  7. 海康摄像头二次开发动态配置.dll与.so文件

    需求 再对海康摄像头进行二次开发时,需要将海康提供的.dll(window)文件或.so(linux)文件通过路径的方式进行配置,项目在window上开发.在linux上进行部署,另一方面在linux ...

  8. 海康sdkC++二次开发之回放下载

    功能简介 因为项目只用到下载录像机硬盘视频的功能,所以就想找比较简单的代码,最后是在官方sdk文档的帮助文档中找到的,每个功能都有一个小示例,下面贴出来` #include <stdio.h&g ...

  9. 海康工业相机IO触发输入输出接线图

    海康工业相机IO触发输入输出接线图 1相机I/O管脚接口定义 2相机line0输入接线方法 2.1相机line0输入等效电路图 2.2相机line0输入接线图 2.3相机参数设置 3相机line1输出 ...

最新文章

  1. OCQ亮相中国移动办公峰会 荣获2017中国移动办公创新品牌
  2. 德鲁克的17条思想精髓,读懂管理的本质
  3. ASP.NET MVC 音乐商店 - 1 创建项目
  4. IBM推出实时跨境支付解决方案Blockchain World Wire
  5. 测量角速度_锡膏的粘度如何正确鉴别和精确测量?
  6. python3下载安装配置-Linux 安装python3.7.3
  7. 关于RPM包中的rpmnew和rpmsave
  8. 可侦测多种眼疾的AI 系统 对不熟悉眼科的医疗照护人员极有帮助
  9. python xpath循环_初学Python,就用它爬取一点情话说给她听!
  10. php 如何设计索引_Mysql学习浅谈mysql的索引设计原则以及常见索引的区别
  11. GPU Gems1 - 15 逐像素光照的可见性管理
  12. 6个必须掌握的基础配置 - [webpack第一篇]
  13. 基姆拉尔森计算公式(算任意日期是星期几)
  14. Netkiller 手札 2019 CHM 格式电子书下载
  15. python @的作用
  16. 视频分享:做“有料”的计算机大学生
  17. Cadence OrCAD Capture 锁定工程和图纸图文视频教程
  18. java浅拷贝与深拷贝及拷贝工具推荐
  19. python 计算众数、中位数、分位数、偏度、峰度
  20. 0 、 '0' 、 0 、 ’\0’ 区别

热门文章

  1. python cut函数_基于python cut和qcut的用法及区别详解
  2. keystore.properties 配置
  3. SAP IDoc消息类型清单
  4. 视网膜眼底图的数据库介绍
  5. HDU 1174 爆头(几何---叉积)
  6. C1任务01《植物大战僵尸》的存档文件修改
  7. 中国航空钢材产业发展格局与商业化发展模式分析报告2022-2028年版
  8. 象棋小程序2-棋子移动
  9. [FIDO]U2F Message协议介绍
  10. 小弟跪求好点的C和C++编程软件有意的留个网址谢谢