OpenGL与OpenCV结合的计算机视觉教程
Tutorial on OpenGL combined with OpenCV for Computer Vision
有人知道一本关于在C++中混合OpenCV
和OpenGL
、与Computer Vision
和3D渲染相关的好教程或文档吗?
我想用对象创建虚拟场景,然后使用OpenCV找到object's 3D poses
,这样我就可以与已知的OpenGL位置进行比较,但到目前为止我还没有找到太多"质量"信息。例如,我需要opengl相机的固有参数,以便使用OpenCV来检测3D世界中的对象等。
混合OpenGL和OpenCV没有什么困难。这只是两个库,一个用于图形,另一个用于计算机视觉。没有重叠,所以你可以把两者都包括在你的项目中。
然后,应该是渲染一些矩形或方框(或任何你想使用OpenCV定位的东西)的问题——有很多关于这方面的教程,然后使用glReadPixels()函数将渲染的数据复制到客户端内存,并将其传递给OpenCV。
没有教程,很可能是因为它太简单了。。。
你可以:
void onDisplay(void* param)
{
glClearColor(0, 1, 0, 1);
glClear(GL_COLOR_BUFFER_BIT); // Make a green window.
}
...
void MyClass::MyInit(bool useCustomInit)
{
std::string winname = "MyWnd";
if (useCustomInit) {
namedWindow(winname, CV_WINDOW_NORMAL);
resizeWindow(winname, 640, 480);
auto handle = cvGetWindowHandle(winname.c_str());
InitializeOpenGL(handle); // your custom OpenGL initialization.
} else {
namedWindow(winname, CV_WINDOW_NORMAL | CV_WINDOW_OPENGL);
resizeWindow(winname, 640, 480);
}
void *param_value = reinterpret_cast<void*>(this); // Can e.g. do this or just use nullptr.
setOpenGlDrawCallback(winname, onDisplay, param_value);
// ...
}
如果您对默认的OpenGL窗口感到满意,可以使用Init(false)
。如果你想要奇特的比特深度和模具缓冲区等等,可以使用操作系统的窗口句柄自己初始化OpenGL。真的有很多这样做的教程。
相关文章:
- 为什么使用 P/Invoke 调用 dll 时,某些计算机中的 LoadLibrary 失败?
- EvtExportLogneneneba API正在将远程计算机的事件日志保存到远程PC本身.如何将其保存到主机
- 视觉studo 2019中的漫画和静态/动态绑定
- 如何改变c++应用程序的视觉效果
- 视觉工作室项目.提取源文件夹名称
- 在计算机视觉中减去两个图像
- OpenCV,计算机视觉
- 使用计算机视觉进行产品检测-使用opencv进行边缘检测
- 从图像中检测和分离单个未知物体(计算机视觉)
- 计算机视觉,提取有关桌子,椅子,床的特征.家具
- 模拟计算机视觉数据集
- OpenMP vs OpenCL 用于计算机视觉
- 关于机器学习/计算机视觉领域实用方法的问题
- OpenGL与OpenCV结合的计算机视觉教程
- 为什么在OpenCV如此完备的情况下,Matlab在计算机视觉社区如此受欢迎?< / h1 >
- 计算机视觉,c++或Java
- c++计算机视觉透视渲染
- 用于后续计算机视觉处理的屏幕截图
- "MATLAB style"计算机视觉\图像处理可视化\调试工具
- 计算机视觉-在TensorFlow上运行C++inception-v3时出现非法指令错误