欢迎来到天天文库
浏览记录
ID:55339449
大小:29.19 KB
页数:7页
时间:2020-05-11
《openc笔记相机调用.docx》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、opencv笔记8----从大恒工业摄像头读取图像2013-10-2510:313280人阅读评论(9)收藏举报采用大恒MER系列工业摄像机,不能用OpenCV自带函数打开摄像头,需要用厂商提供的API工业摄像头采集的图片格式为BYTE,opencv需要从内存中读取BYTE,转化成IplImage*(inC)或者Mat(inc++)[cpp]viewplaincopyprint?1.#include"stdafx.h"2.#include"camera.h"3.#include4.#include2、opencv.hpp>5.usingnamespacecv;6.7.8.GX_DEV_HANDLEhDevice=NULL;9.staticintkeycode;10.11.MERCamera::MERCamera()12.{13.GX_STATUSstatus=GX_STATUS_SUCCESS;14.int64_tnValue=0;15.16.GXInitLib();17.status=GXOpenDeviceByIndex(1,&hDevice);18.if(status!=GX_STATUS_SUCCESS)19.{20.st3、d::cout<<"openerror"<4、:endl;10.}11.12.//关闭设备库13.emStatus=GXCloseLib();14.if(emStatus!=GX_STATUS_SUCCESS)15.{16.std::cout<<"closeliberror"<5、um(hDevice,GX_ENUM_PIXEL_FORMAT,&m_nPixelFomat);27.//获取宽度(需在停止采集状态下设置)28.status=GXGetInt(hDevice,GX_INT_WIDTH,&nValue);29.m_nImageWidth=(int)nValue;30.31.//获取高度(需在停止采集状态下设置)32.status=GXGetInt(hDevice,GX_INT_HEIGHT,&nValue);33.m_nImageHeight=(int)nValue;34.35.//获取图象数据大小16、.status=GXGetInt(hDevice,GX_INT_PAYLOAD_SIZE,&nValue);2.m_nPayLoadSize=(int)nValue;3.//设置采集模式。一般相机的默认采集模式为连续模式。4.int64_tnAcqMode=GX_ACQ_MODE_CONTINUOUS;5.status=GXSetEnum(hDevice,GX_ENUM_ACQUISITION_MODE,nAcqMode);6.7.8.do9.{10.m_pBu7、fferRaw8=newBYTE[m_nImageWidth*m_nImageHeight];11.if(m_pBufferRaw8==NULL)12.{13.status=GX_STATUS_ERROR;14.break;15.}16.17.//为存储RGB图像数据开辟空间18.m_pBufferRGB=newBYTE[m_nImageWidth*m_nImageHeight*3];19.if(m_pBufferRGB==NULL)20.{21.status=GX_STATUS_ERROR;22.break;23.}24.25.//8、为存储原始图像数据开辟空间26.m_pBufferRaw=newBYTE[m_nPayLoadSize];27.if(m_pBufferRaw==NULL)28.{29.status=GX_STATUS_ERROR;30
2、opencv.hpp>5.usingnamespacecv;6.7.8.GX_DEV_HANDLEhDevice=NULL;9.staticintkeycode;10.11.MERCamera::MERCamera()12.{13.GX_STATUSstatus=GX_STATUS_SUCCESS;14.int64_tnValue=0;15.16.GXInitLib();17.status=GXOpenDeviceByIndex(1,&hDevice);18.if(status!=GX_STATUS_SUCCESS)19.{20.st
3、d::cout<<"openerror"<4、:endl;10.}11.12.//关闭设备库13.emStatus=GXCloseLib();14.if(emStatus!=GX_STATUS_SUCCESS)15.{16.std::cout<<"closeliberror"<5、um(hDevice,GX_ENUM_PIXEL_FORMAT,&m_nPixelFomat);27.//获取宽度(需在停止采集状态下设置)28.status=GXGetInt(hDevice,GX_INT_WIDTH,&nValue);29.m_nImageWidth=(int)nValue;30.31.//获取高度(需在停止采集状态下设置)32.status=GXGetInt(hDevice,GX_INT_HEIGHT,&nValue);33.m_nImageHeight=(int)nValue;34.35.//获取图象数据大小16、.status=GXGetInt(hDevice,GX_INT_PAYLOAD_SIZE,&nValue);2.m_nPayLoadSize=(int)nValue;3.//设置采集模式。一般相机的默认采集模式为连续模式。4.int64_tnAcqMode=GX_ACQ_MODE_CONTINUOUS;5.status=GXSetEnum(hDevice,GX_ENUM_ACQUISITION_MODE,nAcqMode);6.7.8.do9.{10.m_pBu7、fferRaw8=newBYTE[m_nImageWidth*m_nImageHeight];11.if(m_pBufferRaw8==NULL)12.{13.status=GX_STATUS_ERROR;14.break;15.}16.17.//为存储RGB图像数据开辟空间18.m_pBufferRGB=newBYTE[m_nImageWidth*m_nImageHeight*3];19.if(m_pBufferRGB==NULL)20.{21.status=GX_STATUS_ERROR;22.break;23.}24.25.//8、为存储原始图像数据开辟空间26.m_pBufferRaw=newBYTE[m_nPayLoadSize];27.if(m_pBufferRaw==NULL)28.{29.status=GX_STATUS_ERROR;30
4、:endl;10.}11.12.//关闭设备库13.emStatus=GXCloseLib();14.if(emStatus!=GX_STATUS_SUCCESS)15.{16.std::cout<<"closeliberror"<5、um(hDevice,GX_ENUM_PIXEL_FORMAT,&m_nPixelFomat);27.//获取宽度(需在停止采集状态下设置)28.status=GXGetInt(hDevice,GX_INT_WIDTH,&nValue);29.m_nImageWidth=(int)nValue;30.31.//获取高度(需在停止采集状态下设置)32.status=GXGetInt(hDevice,GX_INT_HEIGHT,&nValue);33.m_nImageHeight=(int)nValue;34.35.//获取图象数据大小16、.status=GXGetInt(hDevice,GX_INT_PAYLOAD_SIZE,&nValue);2.m_nPayLoadSize=(int)nValue;3.//设置采集模式。一般相机的默认采集模式为连续模式。4.int64_tnAcqMode=GX_ACQ_MODE_CONTINUOUS;5.status=GXSetEnum(hDevice,GX_ENUM_ACQUISITION_MODE,nAcqMode);6.7.8.do9.{10.m_pBu7、fferRaw8=newBYTE[m_nImageWidth*m_nImageHeight];11.if(m_pBufferRaw8==NULL)12.{13.status=GX_STATUS_ERROR;14.break;15.}16.17.//为存储RGB图像数据开辟空间18.m_pBufferRGB=newBYTE[m_nImageWidth*m_nImageHeight*3];19.if(m_pBufferRGB==NULL)20.{21.status=GX_STATUS_ERROR;22.break;23.}24.25.//8、为存储原始图像数据开辟空间26.m_pBufferRaw=newBYTE[m_nPayLoadSize];27.if(m_pBufferRaw==NULL)28.{29.status=GX_STATUS_ERROR;30
5、um(hDevice,GX_ENUM_PIXEL_FORMAT,&m_nPixelFomat);27.//获取宽度(需在停止采集状态下设置)28.status=GXGetInt(hDevice,GX_INT_WIDTH,&nValue);29.m_nImageWidth=(int)nValue;30.31.//获取高度(需在停止采集状态下设置)32.status=GXGetInt(hDevice,GX_INT_HEIGHT,&nValue);33.m_nImageHeight=(int)nValue;34.35.//获取图象数据大小1
6、.status=GXGetInt(hDevice,GX_INT_PAYLOAD_SIZE,&nValue);2.m_nPayLoadSize=(int)nValue;3.//设置采集模式。一般相机的默认采集模式为连续模式。4.int64_tnAcqMode=GX_ACQ_MODE_CONTINUOUS;5.status=GXSetEnum(hDevice,GX_ENUM_ACQUISITION_MODE,nAcqMode);6.7.8.do9.{10.m_pBu
7、fferRaw8=newBYTE[m_nImageWidth*m_nImageHeight];11.if(m_pBufferRaw8==NULL)12.{13.status=GX_STATUS_ERROR;14.break;15.}16.17.//为存储RGB图像数据开辟空间18.m_pBufferRGB=newBYTE[m_nImageWidth*m_nImageHeight*3];19.if(m_pBufferRGB==NULL)20.{21.status=GX_STATUS_ERROR;22.break;23.}24.25.//
8、为存储原始图像数据开辟空间26.m_pBufferRaw=newBYTE[m_nPayLoadSize];27.if(m_pBufferRaw==NULL)28.{29.status=GX_STATUS_ERROR;30
此文档下载收益归作者所有