【问题标题】:Drawing in OpenCV with OpenGL使用 OpenGL 在 OpenCV 中绘图
【发布时间】:2013-08-07 01:15:14
【问题描述】:

OpenCV 库在编译时支持 GPU 和 OpenGL,允许使用 OpenGL 显示图像。例如,video_reader.cpp(位于 gpu 示例中)使用 OpenGL 直接从cv::gpu::GpuMat 渲染显示图形。

cv::gpu::GpuMat d_frame;
namedWindow("OpenGL", WINDOW_OPENGL);
cv::gpu::VideoReader_GPU d_reader(fname);
d_reader.dumpFormat(std::cout);
if (!d_reader.read(d_frame))
    break;
cv::imshow("GPU", d_frame);

这是一个非常有用的功能。但是,它没有记录在documentation on-line 中。例如,对于 namedWindow,标志 WINDOW_OPENGL 未在文档中列出。在哪里可以找到 OpenCV 的 OpenGL 相关功能的文档?

【问题讨论】:

  • 该文档并未涵盖所有功能。前一天,我发现 C API 方法 cvLinearPolar(通过它可以将圆形对象映射到矩形)根本没有引用。旧 API 缺少许多功能。我希望授权的人审查项目并更新文档:)

标签: c++ opengl opencv


【解决方案1】:

2.4.5 的文档不是很完整。我认为没有比您在 http://docs.opencv.org 上看到的更多的文档了。

有较旧的文档,例如 2.1 的 http://opencv.willowgarage.com/documentation/cpp/,但我没有发现它包含您想要的标志的文档。

【讨论】:

    【解决方案2】:

    功能

    cv::imshow(const & string, cv::InputArray)
    

    本身不支持 gpu 矩阵,但通过强制转换支持 GPU 矩阵。

    即任何在其输入上支持cv::Mat 的东西也应该支持cv::gpu::GpuMat。我想这意味着当您调用该函数时,它会自动将矩阵下载到cv::Mat 并从那里开始,即您的imshow 函数调用不是直接绘制gpu->gpu,而是通过gpu->cpu- >显卡。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-06
      • 1970-01-01
      相关资源
      最近更新 更多