如何利用大华sdk进行二次开发

如何利用大华sdk进行二次开发,第1张

车牌识别系统生产厂商,除了发布自己的一体机之外,还有一些支持开发的SDK,我们可以根据他们的提供的SDK开发包来开发适合我们自己需求的软件,里面的开发文档就是二次开发包了,火眼臻睛有提供专门进行二次开发的车牌识别系统SDK,你可以在百度里搜到他们的相关信息。有的SDK开发包可以使用C++、VB、VC语言的编程,但也不一定,你可以根据SDK包里的例子进行对应的语法转换。

大恒相机硬触发说明文档

相机硬触发是区别于软触发,利用IO或者光耦等外部控制信号触发相机快门的技术。

大恒相机有IO触发和光耦触发两种硬触发方式,其中光耦触发隔离了光电回路,对于相机更加安全,但是由于存在光电转换过程所以触发时间延迟了30us左右。硬触发方式只有单次触发,也就是说想要连续获得必须向相机发射多次发射方波信号。

硬触发只能通过回调函数获得,对于大恒相机只能通过已经定义的回调函数获得,回调的数据类型已经确定。

利用IO信号控制相机硬触发

在IO控制线中有line0,line1,line2,line3三根线,前两根是光耦触发线,后两根是IO输入/输出线。注意使用IO控制时还应连接IO地线GND。

[外链转存失败,源站可能有防盗链机制,建议将保存下来直接上传(img-2pAw5Fxg-1659436674790)(/home/houbosen/Pictures/Screenshot 2022-07-14 14:00:47png)]

````

#include <iostream>

#include <string>

#include <vector>

#include <thread>

#include "timeh"

#include "opencv2/opencvhpp"

#include "/libFSM/include/StateMachineh"

#include "stdioh"

#include "GxIAPIh"

//定义全局变量,用来存图和计时

cv::Mat empty(1024, 1280, CV_8UC3, cv::Scalar::all(0));

timeval tv;

long time_end;

long time_start;

//图 像 回 调 处 理 函 数

//传回来的GX_FRAME_CALLBACK_PARAM pFrame包含了图像所在指针,大小,长度等一系列信息,需要解码之后变成RGB

static void GX_STDC OnFrameCallbackFun(GX_FRAME_CALLBACK_PARAM pFrame)

{

if (pFrame->status == 0)

{

gettimeofday(&tv, NULL);

time_end = tvtv_sec 1000000 + tvtv_usec;

std::cout << 1000000 / (time_end - time_start) << "fps"

<< "get an image" << std::endl;

time_start = time_end;

void rgb_buffer = malloc(3 pFrame->nImgSize);

DxRaw8toRGB24((void )pFrame->pImgBuf, rgb_buffer, pFrame->nWidth, pFrame->nHeight, RAW2RGB_NEIGHBOUR, BAYERRG, false);

cv::Mat result = cv::Mat(pFrame->nHeight, pFrame->nWidth, CV_8UC3, rgb_buffer);

resultcopyTo(empty);

}

else

{

std::cout << "fuck,trigger is failed" << std::endl;

}

return;

}

//打开设备和打开库方式相同,关键在于设置触发

int main(int argc, char argv[])

{

GX_STATUS status = GX_STATUS_SUCCESS;

GX_DEV_HANDLE hDevice = NULL;

GX_OPEN_PARAM stOpenParam;

uint32_t nDeviceNum = 0;

gettimeofday(&tv, NULL);

time_end = tvtv_sec 1000000 + tvtv_usec;

time_start = tvtv_sec 1000000 + tvtv_usec;

//初 始 化 库

status = GXInitLib();

//枚 举 设 备 列 表

status = GXUpdateDeviceList(&nDeviceNum, 1000);

if ((status != GX_STATUS_SUCCESS) || (nDeviceNum <= 0))

{

return 0;

}

//打 开 设 备

stOpenParamaccessMode = GX_ACCESS_EXCLUSIVE;

stOpenParamopenMode = GX_OPEN_INDEX;

stOpenParampszContent = "1";

status = GXOpenDevice(&stOpenParam, &hDevice);

if (status == GX_STATUS_SUCCESS)

{

//设 置 触 发 模 式 为 ON

status = GXSetEnum(hDevice, GX_ENUM_TRIGGER_MODE, GX_TRIGGER_MODE_ON);

//设 置 触 发 激 活 方 式 为 上 升 沿,还可以设置下降沿触发,指电平上升或下降时为一次触发

status = GXSetEnum(hDevice, GX_ENUM_TRIGGER_ACTIVATION, GX_TRIGGER_ACTIVATION_RISINGEDGE);

//设置触发开关为line2

status = GXSetEnum(hDevice, GX_ENUM_TRIGGER_SOURCE, GX_TRIGGER_SOURCE_LINE2);

//Selects the physical line (or pin) of the external device connector to configure,我也不知道是啥反正加去了

status = GXSetEnum(hDevice, GX_ENUM_LINE_SELECTOR, GX_ENUM_LINE_SELECTOR_LINE2);

//设置line2模式为input,同样可以设置为outpot,则可以通过相机控制外部设备

status = GXSetEnum(hDevice, GX_ENUM_LINE_MODE, GX_ENUM_LINE_MODE_INPUT);

// GX_ENUM_TRIGGER_MODE: 触发模式, 枚举值参考 GX_TRIGGER_MODE_ENTRY

// GX_COMMAND_TRIGGER_SOFTWARE : 软触发命令

// GX_ENUM_TRIGGER_ACTIVATION : 触发极性, 枚举值参考

// GX_TRIGGER_ACTIVATION_ENTRY GX_ENUM_TRIGGER_SWITCH : 外触发开关, 参考

// GX_TRIGGER_SWITCH_ENTRY GX_ENUM_TRIGGER_SOURCE : 触发源, 枚举值参考

// GX_TRIGGER_SOURCE_ENTRY GX_ENUM_TRIGGER_SELECTOR : 触发类型选择, 参考

// GX_TRIGGER_SELECTOR_ENTRY GX_FLOAT_TRIGGER_DELAY : 触发延迟

//设置曝光和增益等参数和原先在一致

status = GXSetFloat(hDevice, GX_FLOAT_EXPOSURE_TIME, (float)3000);

status = GXSetEnum(hDevice, GX_ENUM_BALANCE_RATIO_SELECTOR, GX_BALANCE_RATIO_SELECTOR_RED);

status = GXSetFloat(hDevice, GX_FLOAT_BALANCE_RATIO, 16484);

status = GXSetEnum(hDevice, GX_ENUM_BALANCE_RATIO_SELECTOR, GX_BALANCE_RATIO_SELECTOR_BLUE);

status = GXSetFloat(hDevice, GX_FLOAT_BALANCE_RATIO, 15664);

status = GXSetEnum(hDevice, GX_ENUM_BALANCE_RATIO_SELECTOR, GX_BALANCE_RATIO_SELECTOR_GREEN);

status = GXSetFloat(hDevice, GX_FLOAT_BALANCE_RATIO, 1000);

status = GXSetEnum(hDevice, GX_ENUM_GAIN_SELECTOR, GX_GAIN_SELECTOR_ALL);

status = GXSetFloat(hDevice, GX_FLOAT_GAIN, 100);

//注 册 图 像 处 理 回 调 函 数,每次接受到一个电平变化就会回调

status = GXRegisterCaptureCallback(hDevice, NULL, OnFrameCallbackFun);

//发 送 开 采 命 令

status = GXSendCommand(hDevice, GX_COMMAND_ACQUISITION_START);

}

//所有引脚状态

int64_t nAllLineStatus = 0;

while (1)

{

cv::imshow("test", empty);

if (cv::waitKey(1) == 'a')

{

}

if (cv::waitKey(1) == 'b')

{

//输出所有引脚的电平,0xc默认是未触发状态,但是实际上0xe是未触发

GX_STATUS Status = GXGetInt(hDevice, GX_INT_LINE_STATUS_ALL, &nAllLineStatus);

std::cout

<< "line status:" << nAllLineStatus << std::endl;

}

if (cv::waitKey(1) == 'q')

{

//

//在 发 送 停 采 命 令 前 如 果 产 生 了 有 效 触 发 , 那 么 图 像

//会 通 过 OnFrameCallbackFun 接 口 返 给 用 户

//---------------------

//发 送 停 采 命 令

status = GXSendCommand(hDevice, GX_COMMAND_ACQUISITION_STOP);

//注 销 采 集 回 调

status = GXUnregisterCaptureCallback(hDevice);

status = GXCloseDevice(hDevice);

hDevice = NULL;

status = GXCloseLib();

std::cout << "end captrue" << std::endl;

return 0;

}

}

}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

IO控制的电控代码

设置曝光为3000us,查看大恒的图像传输过程大概是300us,取一次传图的周期为5000us,即200hz,则也应设置电控发送200hz的IO变化电平,实际在视觉收到的速率也在200hz作有,有不到10hz的变化,这个挺简单的,我就不切系统复制了。

我设计的电控方案是摁一下摁建就会有回调函数触发,回调函数就会展示这张照片,如果没有摁摁建就不会有,不会触发。如有需要可以联系我

文章知识点与官方知识档案匹配

OpenCV技能树首页概览

9775 人正在系统学习中

点击阅读全文

打开CSDN,阅读体验更佳

相机触发模式_物随心转的博客

软触发有着更大的柔性,但系统整体速度和测量精度一般不如内触发,特别是有着复杂信号处理模块的时候软件触发模式, 32 硬触发 就是相机有硬件触发出入接口,收到外部现场的触发信号,相机拍照,然后送出图像数据,送出图像数据的反应时间按照

Basler 相机硬触发(line1外部触发)接线与输出Out1_Zachary Zheng的博客

一、接线根据官网6pin针角说明,2外部触发正,5为外部触发接地, 外部触发0-24VDC均可,不要超过30VDC。1和6 为相机电源24V即可。数据线对应6根线,笔者数据线型号为CS-6003-5M, 1和6已经接220V转24V电源的适配器了,只需要接2红线和

大恒相机二次开发 单次触发

在MFC的环境下,大恒相机二次开发,相机采集,单次触发

硬触发控制相机拍照matlab代码,海康相机连续不断硬触发拍照代码

整了两天终于搞定了,还未优化,投影仪500帧/s投编码图案,触发相机拍照,连续不断拍,实现动态三维重建。代码还未整理,先记录一下#include #include #include #include "MvCameraControlh"#include #include "bmpLoaderh"int nRet = MV_OK;void handle = NULL;int expose1 =

继续访问

工业相机常用类型详述_人狮子的博客_工业相机的分类

此类相机采用 CCD 或 CMOS 芯片,像素区间在30万-15亿,接口为USB,GIGE,Camera Link, CoaXPress等,触发方式有三种:支持硬触发、软触发及自由运行模式,支持对增益、曝光时间、白平衡、Gamma 校正、LUT、Binning 等进行调节。 2工业线阵

海康相机软硬触发方式修改_Major的博客

海康相机软硬触发方式修改 海 康 相 机 软 硬 触 发 方 式 修 改 海康相机软硬触发方式修改海康相机软硬触发方式修改

最新发布 大恒相机sdk二次开发 _c#从0开始新建winform窗体实现相机基础采集功能

大恒相机sdk二次开发 _c#从0开始新建winform窗体实现相机基础采集功能

继续访问

海康相机的触发模式

一、图像采集模式分类 相机的图像采集模式分为内触发模式与外触发模式。其中内触发模式包含连续采集、单帧采集两种形式;外触发模式包含软件触发、硬件外触发。本文以海康相机的软件平台作介绍,该软件去海康机器人官网下载。 内触发模式与外触发模式可以通过 Acquisition Control 下的 Trigger Mode 参数进行设置 Trigger Mode 选择 On 则为外触发模式, Trigger Mode 选择 Off 则为内触发模式。如图 二、内触发模式

继续访问

大恒水星系列Gige数字相机外触发接线

PLC或机器人输出IO作为相机的触发信号 大恒水星系类Gige数字相机外触发线接到台达PLC或者雅马哈机器人IO输出端,作为触发信号的接线方法。 手册里提供的接线图如下 转换为接线图如下图 注意:此电路中要在PLC或机器人的对应输出IO上接相应的上拉电阻,一般串进去2KΩ的电阻。

继续访问

相机的硬触发接线

1需要要懂得一点继电器的原理,继电器就是通过给线圈通电,使触点动作,由常开变成常闭。 2在接线的时候,我们需要根据我们的信号输入的是高电平还是低电平。 3下面的例子信号输入是低电平信号,所以线圈需要接收24V

继续访问

线阵相机的软触发与硬触发详解

如果了解过线阵相机的工作原理后,就会想要知道如何触发线阵相机拍照。 无论何种触发方式,要保证线阵相机拍出的不压缩也不拉长,就要保证横向精度与纵向精度相等。 这样每个像素的宽与高对应的世界尺寸是一样的。 Ⅰ,在软触发下, 以下面的公式开篇: 横向精度=纵向精度 横向精度=FOV(mm) / 线阵相机像元尺寸(无量纲常量) 横向精度就是一个像素的宽对应世界范围的尺寸。 线阵相机像元尺寸就是这个相机多少K的,一般分为16384, 8192 , 4096 等等。 FOV 为视野范围,要和相机搭载的镜头一起考虑。

继续访问

相机硬触发接线与程序详解

前言 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。 提示:以下是本篇文章正文内容,下面案例可供参考 一、pandas是什么? 示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。 二、使用步骤 1引入库 代码如下(示例): import numpy as np import pandas as pd import matplotlibpyplot a

继续访问

相机软硬触发(相机电源线多出的两根线头是什么?)

有很多人刚接触工业相机时会好奇相机电源线多出的两根线头是什么,不懂的还以为是线断了。其实它是相机触发模式中的一种 --- 外部触发开关。 如何打开相机的外部触发? 可以在连接相机的软件中找到 AcquisitionTrigger属性目录,将目录下的TriggerSource属性改为Line1 (Software是软触发),然后将TriggerMode设为On。此时原本连续采集的图像不再连

继续访问

软触发和硬触发的区别

转自: 什么是硬件触发和软件触发 硬件触发:数据采集卡被动等待触发信号,接收到信号后才进行数据采集;触发信号可由某个仪器在一定状态下发出。如有的自动测量系统中的高速数据卡就接收position controller发出的触发信号。而有的则依靠矢量网络分析仪接收外部触发信号。之所以能接收触发信号,和仪器的工作模式有关。硬件触发与数据采集卡有关。 软件触发:通过软件主动查询信号或仪器当

继续访问

热门推荐 Basler相机硬触发的接线方法

笔者在工作中接触到Basler相机与NPN型光电开关配合完成相机外触发功能的实现,现将方式记录如下: 首先 相机的航空电源线以颜色来区分功能,一般只要熟悉颜色就可以接好线。 相机端需要连接4根线:红(电源+)、黑(电源-)、棕(信号线)、绿(信号线) NPN传感器需要3根线:棕(电源+)、蓝(电源-)、黑(信号线) 相机一般供电

继续访问

大恒双相机开发-C#zip

界面做了优化,采用多线程技术,做了显示帧率的显示与采集帧率的显示,内有 帧率计算方法,时间计算方法,并行,多线程,绘图方法,托管与非托管内存转换技术等

大恒相机Python版Qt界面(一)

大恒相机、python、PyQt界面开发

继续访问

大恒相机开发实践(3)——参数设置

这篇文章涉及到的内容主要是你该如何生成那个节点而已,以后关于那个有机会再出一篇文章,但那是后话了。

继续访问

工业相机,大恒,面振相机8脚电源线和I/O触发接口线,颜色和接法说明和触发软件设定

上图: 说明一下,工业相机有TTL逻辑电平触发,也有光耦触发等。 这里一般我们用电路板驱动,就用GPIO触发模式, 这里,准备了两个GPIO触发模式,为LINE2,LINE3都可以选择,然后有一个GPIO_GND 如果,你只有一个触发接口,那么如图,选两个就好了。 实际接法如图。

继续访问

海康相机硬触发接线 -6pin

海康相机硬触发接线 -6pin

继续访问

Basler ace 相机软件设置、 硬件连接、软件触发,程序硬件触发全套详细资料

一、触发使用说明书 >

一、Android_SDK的下载

1、官网下载(非免费)

(1)Android_SDK没有,就直接下包含Android_SDK的Android_studio

2、个人分享(留言分享)

3、网上输入关键字“Android SDK”搜索

(1)推荐网址:>

以上就是关于如何利用大华sdk进行二次开发全部的内容,包括:如何利用大华sdk进行二次开发、大华相机硬触发设置、Appium环境部署(二)——Android_SDK的下载、安装与配置等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/10156317.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存