Ejemplo n.º 1
0
cv::Mat E2VCameraDirectRead::GetImage()
{
	if (HasBeenInited)
	{
		//acquire one image per subbuffer
		//1.fg
		//2.采集卡口
		//3.采集帧数
		//4.?
		//5.缓存地址
		if ((Fg_AcquireEx(E2VCameraModel::fg, _camPort, 1, ACQ_STANDARD, memHandle)) < 0) {
			fprintf(stderr, "Fg_AcquireEx() failed: %s\n", Fg_getLastErrorDescription(fg));
			errorMessageWait(); 
			return cv::Mat();
		}

		frameindex_t fcount = 0;
		frameindex_t last_pic_nr = 0;
		frameindex_t cur_pic_nr;

		cv::Mat OriginalImage;

		cur_pic_nr = Fg_getLastPicNumberBlockingEx(fg, last_pic_nr + 1, _camPort, 100, memHandle);
		if (cur_pic_nr < 0)
		{
			Fg_stopAcquire(fg, _camPort);
			errorMessageWait(); return cv::Mat();
		}
		unsigned char *bytePtr = (unsigned char*)Fg_getImagePtrEx(fg, cur_pic_nr, 0, memHandle);
		//if (nId != -1)
		//	::DrawBuffer(nId, Fg_getImagePtrEx(fg, lastPicNr, 0, memHandle), (int)lastPicNr, "");

		OriginalImage = cv::Mat(_frameHeight, _width, CV_8UC3, bytePtr).clone();
		if (_colorType == GRAY)
		{
			cv::cvtColor(OriginalImage, OriginalImage, CV_BGR2GRAY);
		}

		fcount++;


		Fg_stopAcquireEx(fg, _camPort, memHandle, 0);
		return OriginalImage;
	}
	else
		return cv::Mat();
}
Ejemplo n.º 2
0
int close_cam(Fg_Struct *fg)
{
	if(Fg_setExsync(fg, FG_OFF, PORT_A) < 0) {
		printf("sync off: %s\n", Fg_getLastErrorDescription(fg));
	}

	if(Fg_stopAcquire(fg, PORT_A) != FG_OK) {
		printf("stop acq: %s\n", Fg_getLastErrorDescription(fg));
	}

	if(FastConfigFree(PORT_A) != FG_OK) {
		printf("FC free: %s\n", Fg_getLastErrorDescription(fg));
	}

	if(Fg_FreeGrabber(fg) != FG_OK) {
		printf("free grabber: %s\n", Fg_getLastErrorDescription(fg));
	}

	return FG_OK;
}
Ejemplo n.º 3
0
void Camera::close(){
  Fg_stopAcquire(fg,camPort);
  Fg_FreeMemEx(fg, memHandle);
  Fg_FreeGrabber(fg);
  free(serialRefPtr);
}
Ejemplo n.º 4
0
void Camera::stop(){
  Fg_stopAcquire(fg,camPort);
}