【问题标题】:OpenCV VideoCapture with H264 CODEC使用 H264 编解码器的 OpenCV VideoCapture
【发布时间】:2014-12-10 02:36:09
【问题描述】:

我正在为我的项目使用新的罗技相机 c920 进行物体识别。
我的相机可以支持 H264 编解码器,并且可以显示 H264 高清输出。
但是我如何在下面的代码中将 CODEC 类型设置为 H264 以输出为 H264 DECODED STREAM 通过使用 OpenCV 指令。

我正在使用以下逻辑捕获视频:ref:this link

#include "opencv2/opencv.hpp"

using namespace cv;

int main(int, char**)
{
    VideoCapture cap(0); // open the default camera
    if(!cap.isOpened())  // check if we succeeded
        return -1;

    for(;;)
    {
        Mat frame;
        cap >> frame; // get a new frame from camera
        imshow("display", frame);
        if(waitKey(30) >= 0) break;
    }
    // the camera will be deinitialized automatically in VideoCapture destructor
    return 0;
}

【问题讨论】:

  • 您可以使用imencode 编码到内存或使用FOURCC 代码创建VideoWriter 类。但据我所知,许多预编译的 openCV 发行版不支持 H.264 编码,因此您可能必须在启用 x264 库的情况下自行编译。
  • 啊...再次阅读您的问题...我很确定cap >> frame 已经提供解码图像。您想对其进行编码还是想直接从相机获取编码流?我认为使用 openCV 函数是不可能的,也许你的相机驱动程序给了你合适的方法?!?
  • 感谢 Micka 的重播。我现在知道 cap>>frame 是使用 FFMPEG 编解码器在内部解码。所以不需要显式使用其他编解码器。你知道如何捕获来自罗技相机的原始数据并存储在普通比特流中??
  • 抱歉没有使用这些摄像头的经验

标签: opencv codec


【解决方案1】:

通过设置fourCC 属性,您应该告诉VideoCapture 您的来源是h.264。 openCV 的所有文档都说你会得到解码的 BGR 数据。

cap.set(CV_CAP_PROP_FOURCC, CV_FOURCC('H', '2', '6', '4'));

【讨论】:

    猜你喜欢
    • 2013-11-24
    • 2012-07-03
    • 1970-01-01
    • 2022-01-11
    • 1970-01-01
    • 2021-02-09
    • 2012-10-08
    • 2019-12-31
    • 2013-03-29
    相关资源
    最近更新 更多