Fan_ives 2023-09-08 09:26 采纳率: 0%
浏览 9

opencv在linux上open返回false

您好 我看到您在下面链接下问了一个和我这边碰到的一样的问题,想问下之前您遇到的windows开发没问题, linux上isOpen返回false的问题,有解决吗?我这边有同样的问题,本地可以,发布上总是打不开,拿不到视频的每一个帧,请求帮助
链接:
https://blog.csdn.net/weixin_42558056/article/details/99624323

  • 写回答

3条回答 默认 最新

  • raymond27 2023-09-08 09:48
    关注

    在Linux上,OpenCV无法打开并获取视频的每一帧,这可能是由于多种原因导致的。以下是一些可能的解决方案:

    1.检查摄像头是否正确连接并开启。你可以使用命令行工具,如ls /dev/video*来查看系统中是否已经正确连接摄像头。
    2.确保你的OpenCV版本与你的系统兼容,并且已经正确安装。你可以使用pkg-config --modversion opencv来检查OpenCV的版本。
    3.确保你的程序有足够的权限来访问摄像头。在Linux上,你可能需要以管理员权限运行程序。
    4.检查你的代码是否正确。以下是一个简单的OpenCV视频读取示例:

    #include <opencv2/opencv.hpp>
    #include <iostream>
    
    int main(int argc, char** argv)
    {
        cv::VideoCapture cap(0); // 打开默认摄像头
    
        if (!cap.isOpened()) // 检查是否成功打开
        {
            std::cout << "无法打开摄像头" << std::endl;
            return -1;
        }
    
        while (true)
        {
            cv::Mat frame;
            bool bSuccess = cap.read(frame); // 读取一帧
    
            if (!bSuccess) // 如果无法读取帧,可能已经到了视频的结尾
            {
                std::cout << "视频已经结束" << std::endl;
                break;
            }
    
            // 在这里处理帧
            // cv::imshow("Frame", frame);
            // cv::waitKey(1);
        }
    
        return 0;
    }
    
    

    5.如果你正在使用多个OpenCV版本,你可能需要使用pkg-config来指定正确的版本。例如,你可以使用g++ -o test test.cpp $(pkg-config --cflags --libs opencv4)来编译你的程序。
    6.如果你使用的是虚拟机,那么摄像头可能被虚拟机捕获。在这种情况下,你需要将摄像头设置为宿主机的设备,或者在虚拟机中使用模拟的摄像头。
    7.最后,如果以上都无法解决问题,你可能需要检查硬件是否有问题,或者尝试在不同的Linux发行版上运行你的程序。

    评论

报告相同问题?

问题事件

  • 创建了问题 9月8日

悬赏问题

  • ¥50 有没有适合匹配类似图中的运动规律的图像处理算法
  • ¥15 dnat基础问题,本机发出,别人返回的包,不能命中
  • ¥15 请各位帮我看看是哪里出了问题
  • ¥15 vs2019的js智能提示
  • ¥15 关于#开发语言#的问题:FDTD建模问题图中代码没有报错,但是模型却变透明了
  • ¥15 uniapp的h5项目写一个抽奖动画
  • ¥15 hadoop中启动hive报错如下怎么解决
  • ¥15 如何优化QWebEngineView 加载url的速度
  • ¥15 关于#hadoop#的问题,请各位专家解答!
  • ¥15 如何批量抓取网站信息