If you want to display a GUI window on the screen using OpenCV, you call the cv::namedWindow()
function and then the 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 basis 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....