- 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
推薦閱讀
- Data Visualization with D3 4.x Cookbook(Second Edition)
- 程序員修煉之道:程序設計入門30講
- LabVIEW Graphical Programming Cookbook
- 微服務與事件驅動架構
- Learning RxJava
- Access 數據庫應用教程
- JMeter 性能測試實戰(第2版)
- MySQL 8 DBA基礎教程
- Functional Programming in JavaScript
- Mastering Unity Shaders and Effects
- TradeStation交易應用實踐:量化方法構建贏家策略(原書第2版)
- D3.js By Example
- Mastering Akka
- Raspberry Pi Robotic Blueprints
- Appcelerator Titanium:Patterns and Best Practices