Пример #1
0
ReturnType HVR2300ImageCapture::onExecute()
{

    RawImage result;					// 데이터 포트타입은 RawImage

    BYTE *buff;
    buff = new BYTE[m_img_width * m_img_height];

    if(1 != HVR_camGetImageData(m_img_width * m_img_height, buff, CAMERA_NO)) {

        std::cout<<"Buffer fail"<<std::endl;
        Sleep(30);
        getFlag = false;

    } else {

        getFlag = true;

    }

    if(getFlag == true) {

        m_image->imageData = (char*)buff;
        cvCvtColor(m_image, m_image_tp, CV_BayerGB2BGR);

        // 영상의 복사 작업(영상데이터 & 영상 크기(Pixel수)
        // RawImage의 이미지 포인터 변수 할당
        RawImageData *pimage = result.getImage();

        // 입력된 이미지 사이즈 및 채널수로 로 재 설정
        pimage->resize(m_image_tp->width, m_image_tp->height, m_image_tp->nChannels);

        // 영상의 총 크기(pixels수) 취득
        int size = m_image_tp->width * m_image_tp->height * m_image_tp->nChannels;

        // 영상 데이터로부터 영상값만을 할당하기 위한 변수
        unsigned char *ptrdata = pimage->getData();

        // 현재 프레임 영상을 사이즈 만큼 memcpy
        memcpy(ptrdata, m_image_tp->imageData, size);

        // 포트아웃
        opros_any mdata = result;
        ImageOut.push(result);//전달

    }

    delete buff;

    return OPROS_SUCCESS;
}
Пример #2
0
int HyVisionHvr2130Camera::GetImage(unsigned char *image)
{
	if(1 != HVR_camGetImageData(_cameraWidth*_cameraHeight*2, _cameraBuf, _id))
	{
		PrintMessage("ERROR : HyVisionHvr2130Camera::GetImage() -> Buffer fail...\r\n");
		return API_ERROR;
	}

	HVR_ispYCbCrToBmp(YCbYCr, _cameraWidth, _cameraHeight, _cameraBuf, _cameraBufBMP, HVR2130P);

	IplImage *cvImage = cvCreateImageHeader( cvSize(_cameraWidth, _cameraHeight), 8, 3 );
	cvImage->imageData = (char *)_cameraBufBMP;
	cvFlip(cvImage, NULL, 0);

	if( _flip  == 1 ) {
		cvFlip(cvImage, NULL, 0);	// x-axis
	}
	else if( _flip == 2 ) {
		cvFlip(cvImage, NULL, 1);	// y-axis
	}
	else if( _flip == 3 ) {
		cvFlip(cvImage, NULL, -1);	// xy-axis
	}

	if( cvImage->imageSize != _width*_height*_pixelByte ) {
		IplImage *resizeImage = cvCreateImage( cvSize(_width, _height), 8, _pixelByte );
		cvResize(cvImage, resizeImage );
		memcpy(image, resizeImage->imageData, _width*_height*_pixelByte);
		cvReleaseImage( &resizeImage );
	} else {
		memcpy(image, cvImage->imageData, _width*_height*_pixelByte);
	}

	cvReleaseImageHeader( &cvImage );

	return API_SUCCESS;
}