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

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
主站蜘蛛池模板: 凉城县| 阜新| 黎平县| 泸水县| 兴文县| 滕州市| 张家港市| 广丰县| 镇巴县| 建宁县| 正蓝旗| 本溪市| 遵化市| 甘谷县| 武邑县| 宝坻区| 丰台区| 扶风县| 韶关市| 乐清市| 长治市| 同仁县| 博客| 通许县| 镶黄旗| 奉贤区| 汕头市| 丹巴县| 荣昌县| 夹江县| 师宗县| 博野县| 大余县| 咸丰县| 余江县| 南陵县| 徐州市| 内江市| 兰州市| 三原县| 新昌县|