首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >尝试在C++中使用OpenCV渲染来自灰度相机的图像。在几帧后挂起

尝试在C++中使用OpenCV渲染来自灰度相机的图像。在几帧后挂起
EN

Stack Overflow用户
提问于 2015-11-20 03:31:43
回答 2查看 357关注 0票数 1

我有一个灰度相机(不是彩色的),并试图渲染图像。我在Raspbian上运行,在Raspberry Pi 2上。我抓取了一些代码,并尽可能地展示了它,并取得了一些进展:

代码语言:javascript
复制
    #include "opencv2/opencv.hpp"
    #include <iostream>
    using namespace cv;
    using namespace std;

    int main(int, char**)
    {
        VideoCapture cap(0); // open the default camera
        if(!cap.isOpened())  // check if we succeeded
            return -1;
        bool rtn;
//        rtn = cap.set(CV_CAP_PROP_FRAME_WIDTH , 752);
//        cout << "set to 752:" << rtn << endl;
//        rtn = cap.set(CV_CAP_PROP_FRAME_HEIGHT , 480);
//        cout << "set to 480:" << rtn << endl;
        int count = 1;
        Mat edges;
        namedWindow("edges",1);
        for(;;)
        {
            Mat frame;
            cap >> frame; // get a new frame from camera
            cout << "cols:" <<frame.cols << endl;
            cout << "rows:" << frame.rows << endl;
            cout << "count:" << count++ << endl;
            cout << "Channel Count:"<< frame.channels() << endl;
  //        cvtColor(frame, edges, CV_BGR2GRAY);
            imshow("edges", edges);
            if(waitKey(30) >= 0) break;
        }
        // the camera will be deinitialized automatically in VideoCapture destructor
        return 0;
    }.

现在我得到了灰度图像,但它只运行了几帧(2-4帧,视情况而定),然后挂起。有趣的是,如果你等待的时间足够长,有时它会在"select timeout“消息之后扫描更多的帧。

在运行应用程序之前,我尝试运行以下命令,但似乎没有什么帮助:

代码语言:javascript
复制
rmmod uvcvideo
modprobe uvcvideo nodrop=1 timeout=5000

此外,即使我指定相机分辨率为720x480 (根据相机规格),它报告的帧大小为640x480。

似乎当我去掉下面的代码时:

代码语言:javascript
复制
cvtColor(frame, edges, CV_BGR2GRAY);

它可以工作,但它不是灰度图像,它是绿色的。请注意,我已经注释掉了设置框架的宽度和高度。

EN

回答 2

Stack Overflow用户

发布于 2015-11-21 21:04:07

因为你是从摄像头捕获帧,所以只要帧准备好了,它就会捕获一帧,所以你不需要等待30毫秒,只需1毫秒就足够了,在将帧转换为灰色之前,请确保它有3个通道(作为RGB或BGR帧)。

顺便说一下,cv::VideoCapture::Set函数可能在某些设备或某些属性上不起作用。为了设置图像尺寸,你应该检查你的相机接受的尺寸,例如,它可能只接受320x200,640x480,600x800,...

票数 1
EN

Stack Overflow用户

发布于 2015-12-16 06:13:30

结果是我的电源出了问题。我从pi板增加了电源(在/boot/config.txt中有一个这样做的设置),但这是不够的。我添加了一个USB电源分路器,并使用了一个工作台电源。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33812787

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档