国惠光电相机SDK调用——python实现

news/2024/11/16 20:49:58/

系列文章目录

第一章 国惠光电相机SDK调用——python实现


文章目录

  • 系列文章目录
  • 前言
  • 一、必备python知识
  • 二、相机SDK调用实现
    • 1.创建设备信息结构体
    • 2.导入python模块
    • 3.引入相机SDK
    • 4.查找连接设备
    • 5.获取图像数据
    • 6.采用cv2模块显示
    • 7.相机参数控制
    总结


前言

国惠相机SDK采用c语言开发,以动态库(IRSDK.dll和IRSDK.lib)形式发布,在利用相机SDK进行二次开发时,请先详细了解SDK相关功能。本文主要引入python对国惠相机SDK的调用,实现用python对相机的二次开发应用。本例程内容使用python3.9版本,在window10 64位机上编译实现。


一、必备python知识

进行相关开发之前建议熟悉ctypes模块,推荐阅读

https://www.cnblogs.com/night-ride-depart/p/4907613.html

https://blog.csdn.net/lingyu_me/article/details/106837084

二、相机SDK调用实现

1. 创建设备信息结构体(照搬SDK,api.h中的DeviceInformation结构体)

class DeviceInformation(ctypes.Structure):_fields_ = [("name", ctypes.c_char*16),  # 定义一维数组("transport", ctypes.c_char*16),("url", ctypes.c_char * 32),("address", ctypes.c_char * 16),("interfaceName", ctypes.c_char * 16),("serial_num", ctypes.c_char * 16),("pid", ctypes.c_int),("width", ctypes.c_short),("height", ctypes.c_short)]

2.导入python模块

import ctypes 
from ctypes import * 
import numpy as np
import cv2

3.引入相机SDK

fileName = "../BinX64/IRSDK.dll" # 此处根据dll实际所在位置设置路径 
GHOPTO_SDK = ctypes.WinDLL(fileName)

4.查找连接设备

m_deviceCount = c_int(0)#枚举查找设备
GHOPTO_SDK.IR_EnumerateDevices.argtypes = [c_void_p, c_void_p, c_int]  
GHOPTO_SDK.IR_EnumerateDevices.restype = c_int 
GHOPTO_SDK.IR_EnumerateDevices(None, byref(m_deviceCount), 0x00000020) 
#USB设备0x00000020   #千兆网口设备0x00000008#获取设备信息打开设备
m_deviceList = DeviceInformation()
GHOPTO_SDK.IR_EnumerateDevices(pointer(m_deviceList), byref(m_deviceCount), 0x01000000)m_DeviceHandle = None #设备号
GHOPTO_SDK.IR_OpenDevice.argtypes = [c_void_p, c_char_p]  
GHOPTO_SDK.IR_OpenDevice.restype = c_void_p  
m_DeviceHandle = GHOPTO_SDK.IR_OpenDevice(None, m_deviceList.url)#获取相机幅面大小
iWidth = c_int(0)
iHeight = c_int(0)
GHOPTO_SDK.IR_GetDigitArrayPara.argtypes = [c_void_p, c_void_p, c_void_p]  
GHOPTO_SDK.IR_GetDigitArrayPara(m_DeviceHandle, byref(iWidth), byref(iHeight))

5.获取图像数据

GHOPTO_SDK.IR_GetNewArray.argtypes = [c_void_p, ]
GHOPTO_SDK.IR_GetNewArray(m_DeviceHandle) #每次获取新图像都需调用一次该函数len = iWidth.value * iHeight.value
pRawShortData = (c_int16 * len)(*[0])
cast(pRawShortData, POINTER(c_int16))
pBmpData = (c_uint8 * len)(*[0])
cast(pBmpData, POINTER(c_int8))#获取14位原始数据,按两字节存放
GHOPTO_SDK.IR_GetDigitArray.argtypes = [c_void_p, POINTER(c_int16)]  
GHOPTO_SDK.IR_GetDigitArray(m_DeviceHandle, pRawShortData) #原始数据转8位数据,方便显示           
GHOPTO_SDK.IR_DigitArrayToBmp.argtypes = [c_void_p, POINTER(c_int16), POINTER(c_uint8), c_int, c_void_p] 
GHOPTO_SDK.IR_DigitArrayToBmp(m_DeviceHandle, pRawShortData, pBmpData, 0, None)

6.采用cv2模块显示

#一维数据转二维矩阵
np_image = np.array(pBmpData).reshape(iHeight.value, iWidth.value)
np_image = np.flipud(np_image) #对数据进行上下反转,实现正常图像数据#调用cv2显示
cv2.imshow('Camera Video', np_image)
key=cv2.waitKey(50) #50ms刷新一次

 7.相机参数控制(以快门校正为例,展示IR_SendSeriaPortCmd函数的应用)

cmd = c_uint8*16
SHUTTER = cmd(0xFF, 0xFF, 0xAA, 0xFF, 0x00, 0x09, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00)
for i in range(3, len(SHUTTER) - 1):SHUTTER[15] = SHUTTER[15] ^ SHUTTER[i]GHOPTO_SDK.IR_SendSeriaPortCmd.argtypes = [c_void_p, c_void_p, c_int]
GHOPTO_SDK.IR_SendSeriaPortCmd.restype = c_bool
GHOPTO_SDK.IR_SendSeriaPortCmd(m_DeviceHandle, byref(SHUTTER), len(SHUTTER))

总结

 以上主要实现相机的连接和实现视频显示,关于SDK的其他功能和应用,暂时未实现,待续。谢谢!


http://www.ppmy.cn/news/796603.html

相关文章

国惠光电相机SDK调用——回调模式使用示例

系列文章目录 国惠光电相机SDK调用——回调模式使用示例 文章目录 系列文章目录前言一、相关函数二、示例实现 1.定义类2.启动回调3.回调实现4.结束回调总结 前言 本节介绍国惠光电相机SDK回调函数的使用,基于Windows,利用C示例实现。 一、相关函数&am…

国民经济核算

国民经济核算 试题 一、单项选择题(以下每小题各有四项备选答案,其中只有一项是正 确的。本题共30分.每小题2分】 1.反映国民经济生产最终成果的统计指标是( )。 A.国内生产总值 B.社会总产值 C&am…

国惠光电SDK文件内容

文章目录 前言一、开发环境要求二、详细介绍 1.SDK关键文件2.开发说明总结 前言 国惠光电相机提供二次开发SDK套件,套件以动态库形式发布,主要包括三部分。通过下面地址可获取SDK开发文档https://download.csdn.net/download/wwending/20418102 一、开发…

ASP.NET+Sql Server超市商品管理系统1300源代码+设计文档+说明文档

目录 摘 要 Abstract 1 绪论 1.1 课题开发的背景 1.2 课题研究的目的和意义 1.3 本课题国内外研究分析 2 系统主要工具介绍 2.1 系统开发环境 2.2 .NET开发技术 2.3 C#简介 2.4 Visual Studio2012开发工具 2.5 Sql Server 2008简介 3 系统分析 3.1系…

国惠光电短波红外相机资料下载

国惠相机资料放于百度网盘,请客户根据需求下载。谢谢! 1.U口、网口(320,640)相机64位SDK包,地址: 链接: https://pan.baidu.com/s/1VnLfN97lRIwSXEUsGtoOyg 提取码: kp6w (开发手册…

网络填坑之路(7)使用netsh获取WiFi密码

netsh简介 netsh:全称Network Shell 是一个windows系统本身提供的功能强大的网络配置命令行工具 Netsh 是命令行脚本实用工具 它允许从本地或远程显示或修改当前正在运行的计算机的网络配置 netsh可以获取计算机曾经连接过的所有WiFi信息以及WiFi的明文密码 获取密码…

打印机驱动安装一则

OKI的一款7150打印机安装驱动,从官网下载打印机后,发现驱动包里没有setup文件,是一堆看不懂的配置驱动文件,系统为xp,因为一开始安装了错误的驱动,所以重新安装驱动时遇到点问题,首先把错误的驱动和打印机删除,先删除打印机,再把打印机设置页里的服务器属性里的打印机驱动干掉,…

使用计算机打印资料时需要安装打印机驱动,打印机驱动安装步骤详解(一)_电脑基础知识_IT计算机_专业资料...

打印机驱动安装步骤详解(一)_电脑基础知识_IT计算机_专业资料 (10页) 本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦! 9.9 积分 打印机驱动安装步骤详解(-)很多人用快递助手打单的时候都会问&#xf…