我正在加载一组图像,我有一个相应的“矩形补丁”,我想添加到每个图像。我想把它们作为一个连续的动画来播放。
frames = np.load('../data/carseq.npy') #frames
bbox = np.load('carseqrects.npy') #bounding boxes
final_=[]
fig,ax = plt.subplots(1)
for i in range(num_frames):
box = bbox[i]
final_.append([plt.imshow(frames[:,:,i], cmap='Greys_r',animated=True)])
final_.append([ax.add_patch(patches.Rectangle((box[0],box[1]),height+1,width+1, linewidth=2,
edgecolor='red',fill=False))])
ani = animation.ArtistAnimation(fig, final_, interval=100, blit=True,
repeat_delay=1000)
plt.show()
我得到了这段代码的根本错误,
final_.append([ax.add_patch(patches.Rectangle((box[0],box[1]),height+1,width+1, linewidth=2,
edgecolor='red',fill=False))])
只是添加了一个白色的矩形,上面有一个红色的矩形,所以矩形是在前一帧被清除后绘制的——这就创建了一个“闪烁”的效果(因为矩形并不是完全画在帧本身)。还有其他方法吗? 问题来源StackOverflow 地址:/questions/59385141/creating-an-animation-for-composite-images-in-matplotlib
传递给ArtistAnimation的艺术家列表可以是列表的列表,其中列表的每个“行”包含需要在当前框架上绘制的所有艺术家。
frames = np.load('../data/carseq.npy') #frames
bbox = np.load('carseqrects.npy') #bounding boxes
final_=[]
fig,ax = plt.subplots(1)
for i in range(num_frames):
cur_frame = []
box = bbox[i]
cur_frame.append(ax.imshow(frames[:,:,i], cmap='Greys_r',animated=True))
cur_frame.append(ax.add_patch(patches.Rectangle((box[0],box[1]),height+1,width+1, linewidth=2,
edgecolor='red',fill=False)))
final_.append(cur_frame)
ani = animation.ArtistAnimation(fig, final_, interval=100, blit=True,
repeat_delay=1000)
plt.show()
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。