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

  • Mastering OpenCV 4
  • Roy Shilkrot David Millán Escrivá
  • 237字
  • 2021-07-02 14:47:35

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 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.
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.
auto keypress = cv::waitKey(20); // Needed to see anything!
if (keypress == 27) { // Escape Key
// Quit the program!
break;
}
}//end while
主站蜘蛛池模板: 铁岭县| 年辖:市辖区| 鄂托克旗| 都兰县| 卢龙县| 二连浩特市| 阜阳市| 宜春市| 德化县| 阿合奇县| 宜章县| 额尔古纳市| 岱山县| 绿春县| 辰溪县| 荥经县| 鹤壁市| 台东县| 邵武市| 修武县| 东丰县| 吉木乃县| 和政县| 翁源县| 调兵山市| 卫辉市| 仪征市| 太原市| 新疆| 郓城县| 平原县| 新绛县| 津市市| 鄢陵县| 纳雍县| 营山县| 涿鹿县| 乌拉特中旗| 当阳市| 汶川县| 阆中市|