You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 08:42:06