gpt4 book ai didi

c++ - 强制Qt摄像机视频格式

转载 作者:行者123 更新时间:2023-12-02 17:34:28 35 4
gpt4 key购买 nike

我正在尝试使用QML的Qt Camera。

我正在开发自定义VideoFilter:
QVideoFrame MyFilterRunnable::run(QVideoFrame* input, const QVideoSurfaceFormat&, RunFlags)
我开始在Windows上部署应用程序,并且有:

  • 框架可映射为QAbstractVideoBuffer::ReadWrite
  • 帧像素格式为PixelFormat::Format_BGR32

  • 不幸的是,当我迁移到Linux时,一切都改变了,而没有更换我拥有的相机:
  • 框架仅是QAbstractVideoBuffer::ReadOnly
  • 帧像素格式为PixelFormat::Format_YUYV

  • 现在我真的不知道如何将该框架转换为OpenCV Mat

    有什么方法可以选择相机的像素格式?

    最佳答案

    就在史蒂文

        if (input->pixelFormat() == QVideoFrame::Format_YUYV)
    {
    auto input_w = input->width ();
    auto input_h = input->height();

    auto cam_data = input->bits();

    cv::Mat yuyv(input_h, input_w,CV_8UC2, cam_data);
    cv::Mat rgb (input_h, input_w,CV_8UC3);

    cvtColor(yuyv, rgb, CV_YUV2BGR_YUYV);

    m_mat = rgb;
    }
    else
    if (input->pixelFormat() == QVideoFrame::Format_YUV420P || input->pixelFormat() == QVideoFrame::Format_NV12) {
    m_yuv = true;
    m_mat = yuvFrameToMat8(*input);
    } else {
    m_yuv = false;
    QImage wrapper = imageWrapper(*input);
    if (wrapper.isNull()) {
    if (input->handleType() == QAbstractVideoBuffer::NoHandle)
    input->unmap();
    return *input;
    }
    m_mat = imageToMat8(wrapper);
    }
    ensureC3(&m_mat);

    关于c++ - 强制Qt摄像机视频格式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52724171/

    35 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com