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
推薦閱讀
- Visual C++程序設計教程
- AngularJS入門與進階
- The Android Game Developer's Handbook
- Azure IoT Development Cookbook
- PostgreSQL for Data Architects
- Mastering Concurrency in Go
- Web交互界面設計與制作(微課版)
- Java Web開發(fā)之道
- VSTO開發(fā)入門教程
- Visual C++應用開發(fā)
- Java程序設計基礎(第6版)
- Visual C++從入門到精通(第2版)
- Selenium WebDriver Practical Guide
- Java Web開發(fā)基礎與案例教程
- Android從入門到精通