Files
MdVison_edu/demo/example1.cpp

89 lines
2.2 KiB
C++

#include <iostream>
#include "CameraApi.h"
#include "opencv2/core.hpp"
#include "opencv2/opencv.hpp"
#include "opencv2/highgui.hpp"
unsigned char * g_pRgbBuffer;
int main(){
///////////////////// 主体部分
int iCameraCounts = 1;
int iStatues = -1;
int setStatues = -1;
tSdkCameraDevInfo tCameraEnumList;
double* pfExposureTime;
int hCamera;
tSdkCameraCapbility tCapability;
tSdkFrameHead sFrameInfo;
BYTE* pbyBuffer;
int iDisplatFrames = 10000;
int channel = 3;
CameraSdkInit(1);
iStatues = CameraEnumerateDevice(&tCameraEnumList, &iCameraCounts);
printf("statue = %d\n", iStatues);
printf("count = %d\n", iCameraCounts);
if(iCameraCounts == 0){
return -1;
}
iStatues = CameraInit(&tCameraEnumList, -1, -1, &hCamera);
printf("state = %d\n", iStatues);
if(iStatues != CAMERA_STATUS_SUCCESS){
return -1;
}
CameraGetCapability(hCamera, &tCapability);
g_pRgbBuffer = (unsigned char*)malloc(tCapability.sResolutionRange.iHeightMax*tCapability.sResolutionRange.iWidthMax*3);
CameraPlay(hCamera);
///////////////////////
CameraSetAeState(hCamera, false);
setStatues = CameraSetExposureTime(hCamera, 5000);
CameraSetGain(hCamera, 100, 70, 50);
printf("statue = %d\n", setStatues);
if(tCapability.sIspCapacity.bMonoSensor){
channel = 1;
CameraSetIspOutFormat(hCamera, CAMERA_MEDIA_TYPE_MONO8);
}else{
channel = 3;
CameraSetIspOutFormat(hCamera, CAMERA_MEDIA_TYPE_BGR8);
}
///////////////////// 主体部分
while(iDisplatFrames){
if(CameraGetImageBuffer(hCamera, &sFrameInfo, &pbyBuffer, 1000) == CAMERA_STATUS_SUCCESS){
CameraImageProcess(hCamera, pbyBuffer, g_pRgbBuffer, &sFrameInfo);
cv::Mat matImage(
cv::Size(sFrameInfo.iWidth,sFrameInfo.iHeight),
sFrameInfo.uiMediaType == CAMERA_MEDIA_TYPE_MONO8 ? CV_8UC1 : CV_8UC3,
g_pRgbBuffer
);
imshow("example1", matImage);
cv::waitKey(5);
CameraReleaseImageBuffer(hCamera, pbyBuffer);
}
}
CameraUnInit(hCamera);
free(g_pRgbBuffer);
////////////////////
return 0;
}