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相关功能的文档?
3条答案
按热度按时间iklwldmw1#
2.4.5的文档不是很完整。我认为没有比http://docs.opencv.org更多的文档了。
有一些较旧的文档,比如2.1的http://opencv.willowgarage.com/documentation/cpp/,但是我没有发现它有您想要的标志的文档。
webghufk2#
特别是第二个链接为您提供了两个简单的渲染选项。
Texture2D
对象的imshow
setOpenGlDrawCallback()
(),可让您使用OpenGL在nameWindow("OpenGL Window", WINDOW_OPENGL)
上绘图。vaqhlq813#
该函数
本身并不支援GPU矩阵,但透过转换支援GPU矩阵。
也就是说,任何在其输入上支持
cv::Mat
的东西也应该支持cv::gpu::GpuMat
。我认为这意味着,当你调用该函数时,它会自动将矩阵下载到cv::Mat
,并从那里开始,也就是说,你的imshow
函数调用不是直接绘制gpu-〉gpu,而是绘制gpu-〉cpu-〉gpu。