官术网_书友最值得收藏!

Main camera processing loop for a desktop app

If you want to display a GUI window on the screen using OpenCV, you call the cv::namedWindow() function and then cv::imshow()function for each image, but you must also call cv::waitKey() once per frame, otherwise your windows will not update at all! Calling cv::waitKey(0) waits forever until the user hits a key in the window, but a positive number such as waitKey(20) or higher will wait for at least that many milliseconds.

Put this main loop in the main.cpp file, as the base of your real-time camera app:

     while (true) { 
      // Grab the next camera frame. 
      cv::Mat cameraFrame; 
      camera>>cameraFrame; 
      if (cameraFrame.empty()) { 
        std::cerr<<"ERROR: Couldn't grab a camera frame."<< 
        std::endl; 
        exit(1); 
      } 
      // Create a blank output image, that we will draw onto. 
      cv::Mat displayedFrame(cameraFrame.size(), cv::CV_8UC3); 

      // Run the cartoonifier filter on the camera frame. 
      cartoonifyImage(cameraFrame, displayedFrame); 

      // Display the processed image onto the screen. 
      imshow("Cartoonifier", displayedFrame); 

      // IMPORTANT: Wait for atleast 20 milliseconds, 
      // so that the image can be displayed on the screen! 
      // Also checks if a key was pressed in the GUI window. 
      // Note that it should be a "char" to support Linux. 
      char keypress = cv::waitKey(20);  // Needed to see anything! 
      if (keypress == 27) {   // Escape Key 
        // Quit the program! 
        break; 
      } 
    }//end while
主站蜘蛛池模板: 洛宁县| 公主岭市| 天峨县| 博乐市| 类乌齐县| 武功县| 洪湖市| 资兴市| 惠安县| 鄂伦春自治旗| 咸宁市| 朝阳区| 常山县| 芷江| 宁阳县| 察哈| 长泰县| 通江县| 宽甸| 南涧| 南汇区| 怀集县| 东莞市| 鞍山市| 敦化市| 石渠县| 叶城县| 玉田县| 成安县| 浦东新区| 博罗县| 东明县| 凯里市| 谢通门县| 裕民县| 拉孜县| 芒康县| 方正县| 昌平区| 乐山市| 蓬溪县|