映美精相机的数据流转成MAT
由于项目需要,采用映美精的工业相机,利用其图像进行实时采集,并且将图像数据导入成Opencv的Mat图像格式,进行进一步处理。
这个过程涉及到三个方面:
- 映美精相机的采集,
- 采集得到的图像与Mat格式的转换,
- Mat格式如何在图像控件中显示
首先在其官方网站下载相机的驱动以及其开发工具包IC Imaging Control .NET Component, C++ Class Library。下载后安装好,我们可以看到其例子,其中有classlib文件夹,里面的文件就是我们需要使用的文件。然后我们就是根据其例程进行修改。
#include "opencv2/opencv.hpp"#include "tisudshl.h"#include "CmdHelper.h"//这两个头文件是需要包含的,这样才能进行文件的生成using namespace cv;using namespace _DSHOWLIB_NAMESPACE;int main(){Mat capframe; //得到的图像IplImage* rawImage; //旧版的图像Grabber grabber;tFrameHandlerSinkPtr pSink;BYTE* pBuf[1];FrameTypeInfo info;tMemBufferCollectionPtr pCollection;int Height;int Width;// 图像的类型int captype;// 图像的通道int capchannels;//以下就是相机的初始化DShowLib::InitLibrary();BOOL CameraExist=PathFileExists(L"lastSelectedDeviceState.xml");if (!CameraExist){setupDeviceFromFile(grabber);}if (grabber.getAvailableVideoCaptureDevices()==0){return false;}grabber.loadDeviceStateFromFile("lastSelectedDeviceState.xml");// grabber.saveDeviceStateToFile("lastSelectedDeviceState.xml");grabber.setOverlayBitmapPathPosition( ePP_NONE );pSink = FrameHandlerSink::create( eY800, 1 );pSink->setSnapMode( true );// Set the sink.grabber.setSinkType( pSink ); // Prepare the live mode, to get the output size if the sink.if( !grabber.prepareLive( false ) ){std::cerr << "Could not render the VideoFormat into a eY800 sink.";return false;}pSink->getOutputFrameType( info );pBuf[0] = new BYTE[info.buffersize];pCollection = MemBufferCollection::create( info, 1, pBuf );if( pCollection == 0 || !pSink->setMemBufferCollection( pCollection ) ){std::cerr << "Could not set the new MemBufferCollection, because types do not match.";return false;}grabber.startLive( false );rawImage = cvCreateImage(cvSize(2592,1944),IPL_DEPTH_8U,1);rawImage->widthStep=2592;rawImage->imageData=(char*)pBuf[0];capframe.create(1944,2592,CV_8U);Height=2592;Width=1944;captype=CV_8U;capchannels=1;//初始化完毕,下面开始获取一副图像pSink->snapImages(1);capframe.data=(uchar*)rawImage->imageData;//Mat::Mat(rawImage).copyTo(capframe);return 1;}
原文地址:http://www.xncae.com/html/120.html
映美精相机的数据流转成MAT相关推荐
- python一步将npy数据保存成mat
import scipy.io as io io.savemat("dataname.mat", {'data': npy_data}) 使用scipy库中的io模块,只需一步就可 ...
- 信息孤岛影响_数据孤岛成数字化转型最大拦路虎,看RPA如何让企业数据流转自如...
99%的企业难以消除数据孤岛,与传统解决方案互补的RPA来的正好 数据孤岛成数字化转型最大拦路虎,看RPA如何让企业数据流转自如 全文约4800字, 阅读时间约10分钟 文/王吉伟 数据孤岛,是指不同 ...
- hadoop数据流转过程分析
hadoop:数据流转图(基于hadoop 0.18.3):通过一个最简单的例子来说明hadoop中的数据流转. hadoop:数据流转图(基于hadoop 0.18.3): 这里使用一个例子说明ha ...
- goim 中的 data flow 数据流转及思考
goim 文章系列(共5篇): goim 架构与定制 从goim定制, 浅谈 golang 的 interface 解耦合与gRPC goim中的 bilibili/discovery (eureka ...
- 数据决策成共识 大数据产业期待点“数”成金
开放创造价值 应用仍需挖掘 大数据产业期待点"数"成金 互联网时代,大数据全面融入现代社会生产生活,并将深刻改变全球经济和安全格局.大数据不仅是一种技术,更是战略资源.我国大数据产 ...
- 服务器关于数据流转方式
在做数据产品设计时,整个关注两个重点,数据的流转,业务逻辑: 数据怎么流转,数据流转方法,可以根据数据量的大小和使用时效性要求,有三种数据流转的方案: 1.实时大数据量.秒级.可异步: 业务要求:峰值 ...
- 基于星环TDH数据仓库典型总和场景数据流转设计
典型综合场景数据流转设计 综合场景一 T+1数据加工 图 4 T+1方式数据流转 T+1是数据仓库领域最为常见的数据集成模式,T+1模式下数据仓库会在每天固定时间点采集当天或者前一天交易系统数据. 根 ...
- 目标跟踪CLE绘图 OTB数据跟踪绘图 mat文件txt文件 相互转换
跟踪 OTB数据集 绘图 文章主要3个内容 1.txt文件数据-->转换 mat文件 (在matlab上画图) 2.mat文件-->txt文件 画CLE图 3.CLE画图代码 跟踪目标 ...
- 阿里云物联网Iot设备上下线状态数据流转的设置
要想通过物联网平台实现远程监控设备,那么就要建立监控端设备(比如手机)和被监控端设备的数据交互,在阿里云物联网平台完成这个交互功能的方法就是建立两个设备之间的数据流转,对于设备要流转的物模型数据,阿里 ...
- Matlab实现 把.tdms文件转换成.mat文件,并读取分割成等长信号数据集
①将接收到的.tdms文件转换成.mat clc clearData = convertTDMS(true,'xxx.tdms'); % 将.tdms生成.mat文件 % Data = load('x ...
最新文章
- linux 里常用的几个查找命令
- LeetCode Ransom Note(字符串)
- C++ 输入字符串和string 类型总结
- Python3 系列之 编程规范篇
- 下位机和上位机是什么意思_单反无反选择高速机是什么意思?什么是高速机
- spring BeanUtils.copyProperties浅拷贝之特殊的Boolean
- 《高性能mysql》读书笔记一
- ROSE User Case View
- P2604 [ZJOI2010]网络扩容
- win10解压软件哪个好(win10用哪个解压软件)
- AliSQL编译安装
- php腾讯云短信接口调用
- python中文占几个字节_中文在python中占几个字节
- edge使用html2协议,微软推出Microsoft Edge WebView2控件 帮助开发者更好的加载网页
- Cheat Engine逆向修改植物大战僵尸(外挂)
- FLUENT中初识UDF——UDF的简单使用(1)
- 关于“长尾理论”(The Long Tail)
- 广州图普网络科技2017校园招聘简章
- 20.番外篇——Vue如何自定义组件并且进行全局配置
- 台式u盘显示计算机未响应怎么办,u盘插上去电脑没反应怎么办_u盘插上后无任何反应的解决教程-系统城...