当前位置: 首页>>代码示例>>C++>>正文


C++ VideoCapture::grab方法代码示例

本文整理汇总了C++中VideoCapture::grab方法的典型用法代码示例。如果您正苦于以下问题:C++ VideoCapture::grab方法的具体用法?C++ VideoCapture::grab怎么用?C++ VideoCapture::grab使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在VideoCapture的用法示例。


在下文中一共展示了VideoCapture::grab方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: update

	bool update(void) {
		bool result;
		if(useVideo == 0) {
			result = cap.grab();
			cap.retrieve(rgbImg, CV_CAP_OPENNI_BGR_IMAGE);
			cap.retrieve(depthMap, CV_CAP_OPENNI_DEPTH_MAP);
		}
		else if(useVideo == 1) {
			result = cap.grab();
			cap.retrieve(rgbImg);
			depthMap = Mat();
		}
		else if(useVideo == 2) {
			result = (cap.grab() && cap1.grab());
			if(result) {
				cap.retrieve(rgbImg);
				cap1.retrieve(depthImg);
				for(int i=0; i<depthImg.rows; i++) {
					for(int j=0; j<depthImg.cols; j++) {
						depthMap.at<ushort>(i,j) = (int(depthImg.at<Vec3b>(i,j)[0])*256 + int(depthImg.at<Vec3b>(i,j)[1]));
					}
				}
			}
		}
		return result;
	}
开发者ID:YangWun,项目名称:Hand-Tracking-with-Kinect,代码行数:26,代码来源:test.cpp

示例2: grab_frame

int grab_frame(VideoCapture& capture, Mat& img, char* filename) {

  // camera/image setup
  if (!cv_init_) {
    if (filename != NULL) {
      capture.open(filename);
    } else {
      float scale = 0.52;//0.606;
      int w = 640 * scale;
      int h = 480 * scale;
      capture.open(0); //try to open
      capture.set(CV_CAP_PROP_FRAME_WIDTH, w);  capture.set(CV_CAP_PROP_FRAME_HEIGHT, h);
    }
    if (!capture.isOpened()) { cerr << "open video device fail\n" << endl; return 0; }
    capture.grab();
    capture.retrieve(img);
    if (img.empty()) { cout << "load image fail " << endl; return 0; }
    printf(" img = %d x %d \n", img.rows, img.cols);
    cv_init_ = 1;
  }

  // get frames
  capture.grab();
  capture.retrieve(img);

  if (waitKey(10) >= 0) { return 0; }
  else { return 1; }
}
开发者ID:TTgogogo,项目名称:Android-App-Profiling,代码行数:28,代码来源:main.cpp

示例3: main

int main(int argc, char *argv[]){

  ros::init(argc,argv,"aruco_test");
  ros::NodeHandle nh;

  namedWindow("detection_result");
  startWindowThread();
  namedWindow("board");
  startWindowThread();

  /*  Mat distCoeffs = (Mat_<float>(1,5) << 0.182276,-0.533582,0.000520,-0.001682,0.000000);
  Mat camMatrix  = (Mat_<float>(3,3) << 
		    743.023418,0.000000,329.117496,
		    0.000000,745.126083,235.748102,
		    0.000000,0.000000,1.000000);*/

  
  VideoCapture input;
  input.open(0);
  Mat boardImg;
  createBoard(boardImg);

  imshow("board",boardImg);


  while(input.grab() && ros::ok()){
    Mat image,result;
    input.retrieve(image);
    process(image,result);
    imshow("detection_result",result);
  } 
  return 0;
}
开发者ID:kenkiki94305,项目名称:alpha_autopilot,代码行数:33,代码来源:test_hsv.cpp

示例4: main

int main( /*int argc, char* argv[]*/ ){
    VideoCapture capture;
    capture.open(CV_CAP_OPENNI);
    capture.set( CV_CAP_PROP_OPENNI_REGISTRATION , 0);

    if( !capture.isOpened() ){
        cout << "Can not open a capture object." << endl;
        return -1;
    }

    namedWindow( "depth", 1 );
    setMouseCallback( "depth", onMouse, 0 );
    for(;;){
        if( !capture.grab() ){
            cout << "Can not grab images." << endl;
            return -1;
        }else{
            Mat depthMap,show;
            capture.retrieve(world, CV_CAP_OPENNI_POINT_CLOUD_MAP);
            if( capture.retrieve( depthMap, CV_CAP_OPENNI_DEPTH_MAP ) ) depthMap.convertTo( show, CV_8UC1, 0.05f);
            line(show,startPt,endPt,Scalar(255));
            putText(show,format("distance: %f m",dist),Point(5,15),FONT_HERSHEY_PLAIN,1,Scalar(255));
            imshow("depth",show);
        }
        if( waitKey( 30 ) >= 0 )    break;
    }
}
开发者ID:mariojgpinto,项目名称:Experiments,代码行数:27,代码来源:Distances.cpp

示例5: main

int main(int argc, char* argv[])
{
  VideoCapture cap; //
  cap.open("http://192.168.1.139:1234/?action=stream");
  if (!cap.isOpened())  // if not success, exit program
  {
    cout << "Cannot open the video cam" << endl;
    return -1;
  }

  clientSocket = socket(PF_INET, SOCK_DGRAM, 0);
  serverAddr.sin_family = AF_INET;
  serverAddr.sin_port = htons(33333);
  serverAddr.sin_addr.s_addr = inet_addr("192.168.1.139");
  memset(serverAddr.sin_zero, '\0', sizeof serverAddr.sin_zero);
  addr_size = sizeof serverAddr;

  while (1)
  {
    cap.grab();
    cap.retrieve(frame);
    adjusted_color_img = brightness_and_contrast(frame);
    color_detection(adjusted_color_img);
    imshow("view", frame);
    waitKey(20);
    usleep(2000);
  }
}
开发者ID:Chalumpol,项目名称:Test_Linkit_Smart_UDP_Protocol,代码行数:28,代码来源:get_camera.cpp

示例6: getDepthImage

int getDepthImage(VideoCapture capture, Mat &depth_image){

	//depth image

	if( !capture.grab() )
	{
		cout << "Can not grab images." << endl;
		return -1;
	}
	else
	{

		if( capture.retrieve( depth_image, CAP_OPENNI_DEPTH_MAP ) )
		{
			const float scaleFactor = 0.05f;
			//Mat show;
			depth_image.convertTo( depth_image, CV_8UC1, scaleFactor );

			//imshow( "depth map", depth_image );

		}

	}

	return 0;
}
开发者ID:CT-LU,项目名称:CV-Test1,代码行数:26,代码来源:depth_image_generator.cpp

示例7: vIdle

void vIdle() {
    if (TheCaptureFlag) {
        // capture image
        TheVideoCapturer.grab();
        TheVideoCapturer.retrieve(TheInputImage);
        TheUndInputImage.create(TheInputImage.size(), CV_8UC3);
        // by deafult, opencv works in BGR, so we must convert to RGB because OpenGL in windows preffer
        cv::cvtColor(TheInputImage, TheInputImage, CV_BGR2RGB);
        // remove distorion in image
        cv::undistort(TheInputImage, TheUndInputImage, TheCameraParams.CameraMatrix,
                      TheCameraParams.Distorsion);
        // detect markers
        MDetector.detect(TheUndInputImage, TheMarkers);
        // Detection of the board
        TheBoardDetected.second = TheBoardDetector.detect(
            TheMarkers, TheBoardConfig, TheBoardDetected.first, TheCameraParams, TheMarkerSize);
        // chekc the speed by calculating the mean speed of all iterations
        // resize the image to the size of the GL window
        cv::resize(TheUndInputImage, TheResizedImage, TheGlWindowSize);
        // create mask. It is a syntetic mask consisting of a simple rectangle, just to show a example of
        // opengl with mask
        TheMask = createSyntheticMask(TheResizedImage); // lets create with the same size of the resized
                                                        // image, i.e. the size of the opengl window
    }
    glutPostRedisplay();
}
开发者ID:paroj,项目名称:aruco,代码行数:26,代码来源:aruco_test_board_gl_mask.cpp

示例8: LOGD

    JNIEXPORT jboolean JNICALL Java_org_opencv_highgui_VideoCapture_n_1grab
    (JNIEnv* env, jclass, jlong self)
    {
        try {
#ifdef DEBUG
            LOGD("highgui::VideoCapture_n_1grab()");
#endif // DEBUG
            VideoCapture* me = (VideoCapture*) self; //TODO: check for NULL
            bool _retval_ = me->grab(  );

            return _retval_;
        } catch(cv::Exception e) {
#ifdef DEBUG
            LOGD("highgui::VideoCapture_n_1grab() catched cv::Exception: %s", e.what());
#endif // DEBUG
            jclass je = env->FindClass("org/opencv/core/CvException");
            if(!je) je = env->FindClass("java/lang/Exception");
            env->ThrowNew(je, e.what());
            return 0;
        } catch (...) {
#ifdef DEBUG
            LOGD("highgui::VideoCapture_n_1grab() catched unknown exception (...)");
#endif // DEBUG
            jclass je = env->FindClass("java/lang/Exception");
            env->ThrowNew(je, "Unknown exception in JNI code {highgui::VideoCapture_n_1grab()}");
            return 0;
        }
    }
开发者ID:digglefly,项目名称:opencv,代码行数:28,代码来源:VideoCapture.cpp

示例9: video_thread_CL

void video_thread_CL(void* pParams)
{
	FaceDetector *faceDetector;
	if (threadUseCL){
		faceDetector = (FaceDetectorCL*)pParams;
	}
	else{
		faceDetector = (FaceDetectorCpu*)pParams;
	}
	
	std::string name = faceDetector->name();

	//HAAR_EYE_TREE_EYEGLASSES_DATA
	//HAAR_EYE_DATA
	//HAAR_FRONT_FACE_DEFAULT_DATA
	//LBP_FRONTAL_FACE
	//LBP_PROFILE_FACE
	faceDetector->load(HAAR_FRONT_FACE_DEFAULT_DATA);

	VideoCapture videoCapture;
	cv::Mat frame, frameCopy, image;

	videoCapture.open(faceDetector->videoFile().c_str());
	if (!videoCapture.isOpened()) { cout << "No video detected" << endl; return; }

	if (imshowFlag) { cv::namedWindow(name.c_str(), 1); }

	if (videoCapture.isOpened())
	{
		cout << "In capture ..." << name.c_str() << endl;
		while (videoCapture.grab())
		{
			if (!videoCapture.retrieve(frame, 0)) { break; }

			faceDetector->setSrcImg(frame, 1);
			faceDetector->doWork();
			if (imshowFlag){ cv::imshow(name.c_str(), faceDetector->resultMat()); }
			
			std::vector<cv::Rect> &faces_result = faceDetector->getResultFaces();
			std::cout << "face --" << name.c_str() << std::endl;
			for (int i = 0; i < faces_result.size(); ++i){
				std::cout << faces_result.at(i).x << ", " << faces_result.at(i).y << std::endl;
			}
			
			if (waitKey(10) >= 0){
				videoCapture.release();
				break;
			}

			Sleep(1);
		}
	}
	
	if (imshowFlag) { cvDestroyWindow(name.c_str()); }
	finishTaskFlag++;
	_endthread();
	return;

}
开发者ID:sshtel,项目名称:opencv3_practice,代码行数:59,代码来源:WorkThreadWin32.cpp

示例10: imageTakingThread

void* imageTakingThread(void* parameters) {
    vidCap.set(CV_CAP_PROP_FRAME_WIDTH, 160);
    vidCap.set(CV_CAP_PROP_FRAME_HEIGHT, 120);
    while(1)
    {
        vidCap.grab();
    }
}
开发者ID:edigotlieb,项目名称:piManager,代码行数:8,代码来源:cap_test.cpp

示例11: threadGrab1

void threadGrab1(){
        cap1.grab();
        cap1.retrieve(img1);
        Mat Tmp = img1.t(); //Rotate Image
        flip(Tmp,img1,1);
        rightImgs.push_back(img1);
        //outputVideocap1.write(img1);
}
开发者ID:SHJTurner,项目名称:Vision3,代码行数:8,代码来源:stereo_recorder.cpp

示例12: threadGrab0

void threadGrab0(){
        cap0.grab();
        cap0.retrieve(img0);
        Mat Tmp = img0.t(); //Rotate Image
        flip(Tmp,img0,0);
        leftImgs.push_back(img0);
        //outputVideocap0.write(img0);
}
开发者ID:SHJTurner,项目名称:Vision3,代码行数:8,代码来源:stereo_recorder.cpp

示例13: checkFeed

/**
 * parameter cam - Camera that will be used
 * parameter src  - Source matrix that will be shown
 */
void checkFeed(VideoCapture cam, Mat src){
    if(!cam.isOpened()){
        cout << "Camera not detected.";
    }
    if (cam.grab()){
        if (!cam.retrieve(src)){
            cout << "Could not retrieve.";
        }
    }
}
开发者ID:Team694,项目名称:pulse-cv,代码行数:14,代码来源:StuyCV.cpp

示例14: grab

 bool grab()
 {
    bool bSuccess = camera_.grab(); // grab a new frame from video
   if (!bSuccess) //if not success, break loop
   {
        printf("Cannot grab a frame from video stream in camera %d \n", camNum_);
        return false;
   }
   printf("Grabbed a frame from video stream in camera %d \n", camNum_);
   return true;
 }
开发者ID:dan-git,项目名称:outdoor_bot,代码行数:11,代码来源:webcams.cpp

示例15: getNextFrame

bool getNextFrame(VideoCapture& video, Mat& frame, int& framenum, int jump = 1)
{
	// firstGot should regulate itself so it'll reset when a video runs out of frames
	
	bool moreFrames = true;
	if(firstGot) // not first frame
	{
		bool val1 = true;
		for(int i = 0; i < jump; i++)
			if(!video.grab())
				val1 = false;
		bool val2 = video.retrieve(frame);
		framenum += jump;
		if(!val1 || !val2)
		{
			firstGot = false; // this means video ended
			moreFrames = false;
		}
	}
	else // first frame
	{
		bool val = video.grab();
		firstGot = true;
		if(!val)
		{
			printf("first frame val failed on grab\n");
			firstGot = false;
			moreFrames = false;
		}
		val = video.retrieve(frame);
		if(!val)
		{
			printf("first frame failed on retreive\n");
			firstGot = false;
			moreFrames = false;
		}
		framenum++;
	}
	return moreFrames;
}
开发者ID:Connor-Bowley,项目名称:neuralNetwork,代码行数:40,代码来源:ConvNetSeamRun_BOINC.cpp


注:本文中的VideoCapture::grab方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。