python - 将 opengl 缓冲区写入视频的工件

标签 python opencv opengl video

我正在使用 glReadPixels 从 OpenGL 上下文中读取并最终使用 openCV 视频编写器将其写入视频文件。

    screenshot = glReadPixels(0,0,w,h,GL_BGR,GL_UNSIGNED_BYTE)
    cv_image = cv2.cv.CreateImage((w,h), cv2.cv.IPL_DEPTH_8U, 3)
    cv2.cv.SetData(cv_image, screenshot)
    cv2.cv.Flip(cv_image)
    cv2.cv.SaveImage("temp.jpg", cv_image)
    cv2.cv.WriteFrame(video, cv_image)

渲染的视频显示了下图中的伪像。我将所有帧(上面的 cv_image 变量)保存到磁盘,它们都没有任何伪影。似乎 WriteFrame 在这里造成了一些麻烦。 请帮我找出问题所在。

enter image description here

最佳答案

切换到无损压缩方案,例如 PNG(用于图像)或 Huffyuv(用于视频)。

关于python - 将 opengl 缓冲区写入视频的工件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28842658/

相关文章:

python - 如何通过参数化求解线性方程?

qt - 在 QGLWidget 上使用 QPainter 时需要执行哪些步骤才能启用抗锯齿功能?

python - 无法更新嵌套列表中的值

python - 如何使用 "::before"在selenium中获取隐藏的href标签

c++ - opencv 阈值或不等于运算符

python - 更改标题时图像的打开方式有所不同

opengl - 如何在 Ubuntu 上获取 "man glRotate"中的 OpenGL 手册页?

c++ - QGLWidget 拒绝绘制任何东西

python - 往返 MySql 的开销?

python - 将内存中的 OpenCV 图像写入 BytesIO 或 Tempfile