python - 将 python 中显示的图像转换为 OpenCV 图像。

标签 python image opencv plot avi

所以,我想简单地使用我通过 plt.plot(x,y) 制作的现有图,将其转换为“图像”,这样我就可以给它通过以下方式发送给 OpenCV 的视频编写器:

cv2.VideoWriter('myMovie.avi', fourcc, 20.0, (640,480))
writer.write(image)

我的问题是,鉴于我已经绘制的图形,我如何获得“图像”?

谢谢。

最佳答案

在发布解决方案之前,如果您只使用 matplotlib's animation 可能会更容易保存视频。下面是使用 opencv 的解决方案:

import numpy as np
import cv2
import matplotlib.pyplot as plt

fig = plt.figure()


x1 = np.linspace(0.0, 5.0)
x2 = np.linspace(0.0, 2.0)

y1 = np.cos(2 * np.pi * x1) * np.exp(-x1) 
y2 = np.cos(2 * np.pi * x2)

ax = fig.add_subplot(2,1,1)
line1, = ax.plot(x1, y1, 'ko-')        # so that we can update data later
ax.set_title('A tale of 2 subplots')
ax.set_ylabel('Damped oscillation')

ay = fig.add_subplot(2, 1, 2)
ay.plot(x2, y2, 'r.-')
ay.set_xlabel('time (s)')
ay.set_ylabel('Undamped')

for i in range(1000):
    # update data
    line1.set_ydata(np.cos(2 * np.pi * (x1+i*3.14/2) ) * np.exp(-x1) )

    # redraw the canvas
    fig.canvas.draw()

    # convert canvas to image
    img = np.fromstring(fig.canvas.tostring_rgb(), dtype=np.uint8, sep='')
    img  = img.reshape(fig.canvas.get_width_height()[::-1] + (3,))

    # img is rgb, convert to opencv's default bgr
    img = cv2.cvtColor(img,cv2.COLOR_RGB2BGR)

    # display image with opencv or any operation you like
    cv2.imshow("plot",img)
    k = cv2.waitKey(33) & 0xFF
    if k == 27:
        break

关于python - 将 python 中显示的图像转换为 OpenCV 图像。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42603161/

相关文章:

python - 删除一个词,除非它是另一个词的一部分

javascript - 单击箭头更改图像

c++ - cvExtractSURF 抛出异常,cvCreateSeq 中输入数组 ( ) 的大小不正确

c++ - 使用 OpenCV 帧创建 RTP/RTSP 或 HTTP 流

python - MySql cursors.execute() 只有一个参数 : Why is a string sliced into a list?

python - 与给定列表中的每个元素相比,查找每个整数的平均值

python - 带有链接货币字段的 Django order_by 价格字段

css - 我们如何确定移动网站的图像大小?

android - 如何在android中将多个图像组合成一个图像?

python - 使用最小二乘法进行颜色校正