从视频文件中收集 RGB 数据

Posted

技术标签:

【中文标题】从视频文件中收集 RGB 数据【英文标题】:RGB data collection from video file 【发布时间】:2017-05-15 22:53:40 【问题描述】:

只是寻找关于效率的想法,但没有深入。在问几个问题之前,我会解释一下我想要做什么。

我希望能够获取视频文件(不是特定格式)并在后台(不是在屏幕上)“播放”它,同时读取和输出当前帧中特定像素的 RGB 数据“播放”视频 - 逐帧 - 实时。

我已经研究了一些使用 OpenCV 的方法,但我想我会在继续研究的同时在这里询问输入。所以,问题:

这可以通过什么方法实现,最有效/资源轻的方法是什么?

注意:任何主要语言都可以,但我在 C++ 方面最有经验。

谢谢! -卡莱尔

【问题讨论】:

将该像素输出到哪里?出于什么目的?什么平台/操作系统? VideoCapture docs -- 更改该示例以读取文件并修改循环体以便输出所需的像素而不是现在的输出应该是微不足道的。 【参考方案1】:

希望对你有所帮助。

    VideoCapture cap("videofile");

if(!cap.isOpened()

return -1;

    Mat img;

    while(1)
    

    cap >> img;

    for (int i = 0; i < img.cols; i++) 
            for (int j = 0; j < img.rows; j++) 

                Vec3b intensity = img.at<Vec3b>(j, i);

                uchar blue = intensity.val[0];
                uchar green = intensity.val[1];
                uchar red = intensity.val[2];
            

        

imshow("show", img);
    if(cap.empty())
                break;
    waitKey(30);

    

【讨论】:

最好检查cap 是否为空转储其内容之前。另外,如果不显示文件,waitkey() 也不是必需的。

以上是关于从视频文件中收集 RGB 数据的主要内容,如果未能解决你的问题,请参考以下文章

从 YUV420P 到 RGB 的 FFMPEG Api 转换产生奇怪的输出

FFmpeg RGB转MP4

将视频文件推入矢量时矢量内存不足?

使用 OpenCV 将感兴趣区域从 RGB 视频转换为深度视频

Bayer raw RGB是啥视频格式?

用Python从屏幕捕获视频数据