macOS下OpenCV C++中waitKey(0)无法正常工作的问题
macOS下OpenCV C++ waitKey(0)失效问题的解决方案
问题现象
- 程序可正常运行并显示灰度图像,但调用
waitKey(0)时,按下回车键或其他按键无法终止程序,仅能通过Ctrl+C强制结束 - 使用
waitKey(5000)时,程序可正常等待5秒后自动结束
问题原因
macOS的窗口管理机制要求:waitKey()函数仅能捕获图像窗口处于焦点状态时的按键输入。如果直接在终端窗口按键盘,程序无法识别到按键操作。
解决方法
运行程序后,先点击显示图像的窗口(示例中为"Example 1"窗口),使其获得焦点,之后按下任意按键即可触发waitKey(0),程序会正常终止。
修正后的代码(修复语法笔误)
原代码中存在一处语法错误:cv:cvtColor应为cv::cvtColor,修正后的完整代码如下:
#include <opencv2/highgui.hpp> #include <opencv2/imgproc/imgproc.hpp> int main(int argc, char** argv) { cv::Mat img = cv::imread(argv[1]); cv::Mat gray; cv::cvtColor(img, gray, cv::COLOR_BGR2GRAY); cv::namedWindow("Example 1"); cv::imshow("Example 1", gray); cv::waitKey(0); return 0; }
内容的提问来源于stack exchange,提问作者Giacomo Sanguin
相关产品推荐
相关产品推荐

