使用大恒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>
#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();
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;
}
if (vectorDeviceInfo.size() > 0) {
CGXDevicePointer objDevicePtr;
GxIAPICPP::gxstring strSN = vectorDeviceInfo[0].GetSN();
cout << strSN << endl;
objDevicePtr = IGXFactory::GetInstance().OpenDeviceBySN(strSN, GX_ACCESS_EXCLUSIVE);
CGXFeatureControlPointer objFeatureControlPtr = objDevicePtr->GetRemoteFeatureControl();
CGXStreamPointer objStreamPtr = objDevicePtr->OpenStream(0);
objStreamPtr->StartGrab();
objFeatureControlPtr = objDevicePtr->GetRemoteFeatureControl();
objFeatureControlPtr->GetCommandFeature("AcquisitionStart")->Execute();
CImageDataPointer objImageDataPtr;
objImageDataPtr = objStreamPtr->GetImage(500);
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(使用前将#替换为@)