大恒相机使用opencv的单帧采集与数据转换

2023-05-16

使用大恒sdk黑白相机结合opencv的图像采集
关键是实现大恒的数据到opencv里面的Mat矩阵的数据转换。
下面是关键代码

Mat curr(objImageDataPointer->GetHeight(), objImageDataPointer->GetWidth(), CV_8UC1);
void* pRaw8Buffer = NULL;
pRaw8Buffer = objImageDataPointer->ConvertToRaw8(GX_BIT_0_7);
memcpy(curr.data, pRaw8Buffer, (objImageDataPointer->GetHeight())*(objImageDataPointer->GetWidth()));
flip(curr, curr, 0);

简易的demo

#include<iostream>
#include<tchar.h>

//请用户提前配置好工程头文件目录,需要包含GalaxyIncludes.h
#include"GalaxyIncludes.h"
#include<opencv2\core.hpp>
#include<opencv2\imgproc.hpp>
#include<opencv2\highgui.hpp>
using namespace std;
using namespace cv;

int main() {
	cv::Mat srcimage;
	//在调用其他接口之前必须调用IGXFactory::GetInstance().Init()接口执行初始化。
	IGXFactory::GetInstance().Init();

	//枚举设备
	GxIAPICPP::gxdeviceinfo_vector vectorDeviceInfo;
	IGXFactory::GetInstance().UpdateDeviceList(1000, vectorDeviceInfo);
	for (uint32_t i = 0; i < vectorDeviceInfo.size(); i++){
		cout << vectorDeviceInfo[i].GetVendorName() << endl;
		cout << vectorDeviceInfo[i].GetModelName() << endl;
		//更多设备信息详见IGXDeviceInfo接口
	}

	//打开设备
	if (vectorDeviceInfo.size() > 0) {
		//打开链表中的第一个设备
		CGXDevicePointer objDevicePtr;

		GxIAPICPP::gxstring strSN = vectorDeviceInfo[0].GetSN();
		cout << strSN << endl;

		objDevicePtr = IGXFactory::GetInstance().OpenDeviceBySN(strSN, GX_ACCESS_EXCLUSIVE);//目前只能通过strSN打开

		//设备控制
		CGXFeatureControlPointer objFeatureControlPtr = objDevicePtr->GetRemoteFeatureControl();

		CGXStreamPointer objStreamPtr = objDevicePtr->OpenStream(0);

		//开启流通道采集
		objStreamPtr->StartGrab();

		//给设备发送开采命令
		objFeatureControlPtr = objDevicePtr->GetRemoteFeatureControl();
		objFeatureControlPtr->GetCommandFeature("AcquisitionStart")->Execute();


		//采单帧
		CImageDataPointer objImageDataPtr;
		objImageDataPtr = objStreamPtr->GetImage(500);//超时时间使用500ms,用户可以自行设定

		if (objImageDataPtr->GetStatus() == GX_FRAME_STATUS_SUCCESS)
		{
			//采图成功而且是完整帧,可以进行图像处理...
			cv::Mat srcimage(objImageDataPtr->GetHeight(), objImageDataPtr->GetWidth(), CV_8UC1);
			void* pRaw8Buffer = NULL;
			pRaw8Buffer = objImageDataPtr->ConvertToRaw8(GX_BIT_0_7);
			memcpy(srcimage.data, pRaw8Buffer, (objImageDataPtr->GetHeight())*(objImageDataPtr->GetWidth()));
			cv::flip(srcimage, srcimage, 0);//大恒的图像要进行翻转
			imshow("WINDOW1", srcimage);
			waitKey(0);
		}
		//停采
		objFeatureControlPtr->GetCommandFeature("AcquisitionStop")->Execute();
		objStreamPtr->StopGrab();

		//关闭流通道
		objStreamPtr->Close();


		objDevicePtr->Close();//关闭相机并释放资源
	}
	
	


	IGXFactory::GetInstance().Uninit();
	return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

大恒相机使用opencv的单帧采集与数据转换 的相关文章

  • Windows下LaTex转为Word

    文章目录 1 latex gt pdf gt word1 1 以word打开1 2 使用adobe acrobat DC打开 2 latex typora gt word xff08 pandoc xff09 2 0 参数介绍2 1 安装p
  • SQL:用count求group by分组的个数

    1 求每一分组内的个数 查询选修了全部课程的学生姓名 思路 查询一个学生的姓名 xff0c 该学生选修课的门数等于所有课程的门数 逆推 xff1a 查询一个学生的姓名 xff0c 姓名怎么来 xff1f 通过Student的学号得到 xff
  • SQL:数据去重的三种方法

    1 使用distinct去重 distinct用来查询不重复记录的条数 xff0c 用count distinct id 来返回不重复字段的条数 用法注意 xff1a distinct 查询字段 xff0c 必须放在要查询字段的开头 xff
  • Word页面中四个直角

    文章目录 1 四个直角1 xff09 代表页边距2 xff09 页边距的设置3 xff09 打开或关闭 裁剪标记 2 裁剪标记 与图片1 xff09 插入图片超过这个角能打印显示出来吗 xff1f 3 裁剪标记 与表格 1 四个直角 1 x
  • windows搭建ftp及原理(小白向)

    提示 xff1a 文章写完后 xff0c 目录可以自动生成 xff0c 如何生成可参考右边的帮助文档 文章目录 环境一 实验步骤1 1安装ftp 二 ftp实验引发的思考1 简单阐述ftp的原理2 ftp建立的流程 总结 环境 windwo
  • Win10系统自动更新失败(错误代码0x800f0922)

    笔者最近遇到了Win10系统自动更新失败的问题 xff0c 错误代码0x800f0922 每次更新下载安装完 xff0c 重启电脑的时候就会提示 xff1a 我们无法完成更新 正在撤销更改 在设置 Windows更新中有 xff1a 202
  • Linux yum安装redis

    1 安装redis数据库 yum install redis 2 下载fedora的epel仓库 yum install epel release 3 启动redis服务 systemctl start redis 4 查看redis状态
  • Centos 开启X11 Forwarding,实现无桌面环境运行GUI软件

    文章目录 修改SSH配置文件sshd config安装 X11 Forwarding 相关软件重启 sshd 服务 xff0c 并重新SSH连接验证 我们新安装Centos时可能会选择最小安装 xff0c 不安装桌面环境 xff0c 但是后
  • Python pyttsx3|文本朗读(各种语言)

    Python文字转语音 程序员 xff0c 在其他人眼中往往都是高冷的存在 xff0c 在他们的眼中能用代码解决的问题绝对不考虑其他的方法 xff0c 本文让我们用Python来提升一下高冷的档次 xff0c 让我们用代码来 说话 安装py
  • Spring Security 出现 'login.html?error' is not a valid redirect URL 异常

    原因是这个URL地址要以 打头 例如 xff1a 报错的代码 xff1a http span class token punctuation span span class token function formLogin span spa
  • 5. Python3的基本类型(元组)

    Python3的基本类型 xff08 元组 xff09 1 Python 的元组与列表相似 xff0c 不同之处 xff1a 元组不能修改 xff0c 元组使用小括号 xff0c 列表使用方括号 2 元组的创建 xff1a 只需要在括号中添
  • group by内部排序

    规则 xff1a 第一 xff0c 凡是在group by后面出现的字段 xff0c 必须同时在select后面出现 xff1b 第二 xff0c 凡是在select后面出现的 同时未在聚合函数中出现的字段 xff0c 必须同时出现在gro
  • 李宏毅机器学习(四)Spatial Transformer Layer

    学习内容 架构 xff1b 目的就是克服CNN的旋转和缩放不变性的缺点的 xff01 前情提要 CNN is not invariant to scaling and rotation xff1b CNN对缩放和旋转不是不变的 xff1b
  • python修改pip安装镜像源

    pip 默认的安装源安装真的很慢 xff0c 所以我们可以换成国内的一些优质的安装源 通用临时方法 pip install package name i https pypi tuna tsinghua edu cn simple 永久修改
  • 深入理解 Java 线程池的实现原理

    文章目录 1 线程状态2 线程池2 1 线程池的作用2 2 线程池的实现2 2 1 线程池内部状态 1 线程状态 既然要说线程 xff0c 我们就先来了解一下线程的几种状态 xff1a span class token keyword pu
  • windows server安装域控及原理(小白向)

    提示 xff1a 文章写完后 xff0c 目录可以自动生成 xff0c 如何生成可参考右边的帮助文档 文章目录 安装环境一 安装域控二 说明一下遗留的问题总结 这个是一系列的博客文章 xff0c 域控只是开始 安装环境 windwos任意s
  • 详述 Redis 选择单线程模型的原因以及 I/O 多路复用

    文章目录 Redis 选择单线程模型的原因概述设计单线程模型可维护性并发处理性能瓶颈 引入多线程删除操作 总结 Redis 和 IO 多路复用几种 I O 模型Blocking I OI O 多路复用 Reactor 设计模式I O 多路复
  • 新一代垃圾回收器 ZGC 的探索与实践

    文章目录 GC之痛CMS 与 G1 停顿时间瓶颈标记阶段停顿分析清理阶段停顿分析复制阶段停顿分析 ZGC原理全并发的 ZGCZGC 关键技术ZGC 并发处理演示 ZGC 调优实践调优基础知识理解 ZGC 重要配置参数理解 ZGC 触发时机理
  • 详述 Spring 中 Bean 的作用域、事务的隔离级别以及传播行为

    文章目录 Bean 作用域XML 声明singletonprototyperequestsessionglobalSession 注解声明 事务隔离级别事务传播行为 Bean 作用域 Spring IOC 容器创建一个 Bean 实例时 x
  • 饿了么交易系统 5 年演化史

    作者介绍 xff1a 杨凡 xff0c 花名挽晴 xff0c 饿了么高级架构师 xff0c 2014 年加入饿了么 xff0c 2018 年随饿了么被阿里巴巴收购一同加入阿里巴巴 xff0c 4 年团队管理经验 xff0c 4 年主要从事饿

随机推荐