捕获 OpenCV 后图像显示为绿色

Posted

技术标签:

【中文标题】捕获 OpenCV 后图像显示为绿色【英文标题】:image appears green after capture OpenCV 【发布时间】:2016-05-16 07:52:12 【问题描述】:

我有这段代码,它使用 OpenCV 从网络摄像头捕获图像:

#include <opencv2/objdetect/objdetect.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>

#include <iostream>
#include <stdio.h>

using namespace std;
using namespace cv;

int main( )

    VideoCapture cap(0); // open the default camera
    if(!cap.isOpened())  // check if we succeeded
        return -1;

    Mat meter_image;
    cap >> meter_image;

    imwrite("/boneCV-master/img.jpg", meter_image);

    return 0;

我得到以下图像作为输出。

以前它工作正常。我不知道发生了什么。我在谷歌搜索时尝试了所有代码中最简单的,但没有任何效果。请让我知道它可能有什么问题。

提前致谢。

编辑

我忘记提及的一件事是我正在开发 beagleBone Black。这段代码很适合我的 mac。

【问题讨论】:

有时由于相机驱动程序中的某些故障,捕获的第一帧全为零,请尝试获取更多帧。 @ATulSingh 我忘了在我的问题中提到 Beaglebone black。请检查我的编辑 很抱歉,我对这款 Beaglebone black 没有任何想法。你可以做的一件事就是调试 OpenCV 捕获代码,进入这个可能你会发现一些东西,祝你好运(Y) 【参考方案1】:

也许添加帧检查会有所帮助。

Mat meter_image;
while(meter_image.empty())
    cap >> meter_image;

但存在无限循环的风险。

【讨论】:

检查我的编辑...我忘了在这里提到 BeagleBone Black 对不起,我不知道这个设备。我用谷歌搜索了一下,发现了这个tutorial。我猜你会用它。如果没有检查它。也许你忘了给编译器添加一些选项。

以上是关于捕获 OpenCV 后图像显示为绿色的主要内容,如果未能解决你的问题,请参考以下文章

为啥用opencv捕获摄像头视频流时,突然显示框内就变灰了呢

使用opencv线程捕获空白图像

opencv显示窗口有显示xy和rgb

如何定义阈值以仅检测图像中的绿色对象:Opencv [重复]

opencv黄色图片中间显示红色

使用 OpenCV 在同一窗口中显示多个图像