OpenAI gym: How to get pixels in CartPole-v0

news2024/9/20 9:27:48

题意:OpenAI Gym:如何在 CartPole-v0 中获取像素?

问题背景:

I would like to access the raw pixels in the OpenAI gym CartPole-v0 environment without opening a render window. How do I do this?

我想在 OpenAI Gym 的 CartPole-v0 环境中访问原始像素,而不打开渲染窗口。我该如何实现?

Example code:        示例代码

import gym
env = gym.make("CartPole-v0")
env.reset()
img = env.render(mode='rgb_array', close=True) # Returns None
print(img)
img = env.render(mode='rgb_array', close=False) 
          # Opens annoying window, but gives me the array that I want
print(img.shape)

PS. I am having a hard time finding good documentation for OpenAI gym. Is it just me, or does it simply not exist?

附注:我很难找到 OpenAI Gym 的好文档,是我个人的问题,还是文档真的不存在?

Edit: I don't need to ever open the render video.

编辑:我完全不需要打开渲染视频。

问题解决:

I was curious about same so I started looking into the source code and this is what I found.

我对此也感到好奇,所以我开始查看源代码,以下是我发现的内容。

Open AI uses pyglet for displaying the window and animations.

OpenAI 使用 Pyglet 来显示窗口和动画。

For showing the animation everything is drawn on to window and then rendered.

为了显示动画,所有内容都会绘制到窗口上,然后进行渲染。

And then pyglet stores what is being displayed on to a buffer.

然后 Pyglet 将显示的内容存储到一个缓冲区中。

Dummy version of how code is written in open AI

在 OpenAI 中编写代码的简化版本

import pyglet
from pyglet.gl import *
import numpy as np

display = pyglet.canvas.get_display()
screen = display.get_screens()
config = screen[0].get_best_config()

pyglet.window.Window(width=500, height=500, display=display, config=config)

# draw what ever you want

#get image from the buffer

buffer = pyglet.image.get_buffer_manager().get_color_buffer()

image_data=buffer.get_image_data()

arr = np.frombuffer(image_data.get_data(),dtype=np.uint8)

print(arr)
print(arr.shape)

output: [0 0 0 ... 0 0 0]
(1000000,)

so basically every image we get is from buffer of what is being displayed on the window. So if we don't draw anything on window we get no image so that window is required to get the image. so you need to find a way such that windows is not displayed but its values are stored in buffer. I know its not what you wanted but I hope it might lead you to a solution.

所以基本上我们获取的每一张图像都是从显示在窗口上的内容的缓冲区中得到的。因此,如果我们不在窗口上绘制任何东西,就不会得到图像,所以要获取图像,窗口是必需的。因此,你需要找到一种方法,使窗口不显示但其值仍存储在缓冲区中。我知道这不是你想要的答案,但希望它能引导你找到解决方案。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2041524.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

RAC11G场景下OLR文件丢失导致节点GI无法启动

环境说明 RHEL7.911.2.0.4 RAC,双节点。 问题描述 巡检发现节点2的GI无法启动,发现是olr文件丢失导致。 问题复现 故意把OLR删掉,重启后发现GI无法启动 查看/etc/oracle/olr.loc --查看/etc/oracle/olr.loc 该文件记录有olr文件位置和…

密探 -- 渗透测试工具 v1.14 版

1.如何运行 在jdk8环境下(在jdk8以上的高版本请参考常见问题1的处理方案)运行以下语句运行: java -jar mitan-jar-with-dependencies.jar 若不想输入这么长太长语句,可以通过以下脚本的方式启动: Mac/Linux 环境下,…

计算机网络——运输层(进程之间的通信、运输层端口,UDP与TCP、TCP详解)

运输层协议概述 进程之间的通信 运输层向它上面的应用层提供通信服务。 当网络边缘部分的两台主机使用网络核心部分的功能进行端到端的通信时,都要使用协议栈中的运输层;而网络核心部分中的路由器在转发分组时只用到下三层的功能。 Q1:我们…

【最短路径算法】

每日格言:想去的地方很遥远,我们也只能自己走 前言 最短路径算法是一类用于解决图中两点间寻找最短路径问题的算法。这里我们只具体介绍利用matlab中的函数实现,迪克斯特拉算法和弗洛伊德算法大家有兴趣可上网了解一下。这类算法在多个领域都…

安全稳定的镭速高端制造业文件传输摆渡系统

在现代制造业的高速发展中,高端制造领域尤为依赖高效的文件传输系统,这类系统不仅促进了企业内部的合作,还加强了与合作伙伴的紧密联系,成为推动创新和决策的关键因素。镭速文件传输系统正是为了满足这一需求而设计,其…

KamaCoder 102. 沉没孤岛

题目描述: 给定一个由 1(陆地)和 0(水)组成的矩阵,岛屿指的是由水平或垂直方向上相邻的陆地单元格组成的区域,且完全被水域单元格包围。孤岛是那些位于矩阵内部、所有单元格都不接触边缘的岛屿…

如何做好小程序评论优化

用户在决定要不要用一个小程序时,往往会参考其他用户的评分和评论。因此小程序评论优化是提升用户互动和口碑传播的关键环节。以下是一些针对小程序评论优化的具体策略: 1. 优化评论区设计 确保用户能够轻松找到并访问评论区。可以在小程序的显眼位置设…

netassist TCP测试工具使用

写在前面 有时工作中我们编写一些tcp相关的程序,而netassist就是这样一款辅助我们进行TCP功能测试的工具,你可以从这里下载。 1:使用 我们需要一个server程序,可以参考这篇文章,启动server后,就可以使用…

集美大学携手和鲸与龙船,深化“航运+AI”学科建设,赋能航海人才培养

“闽国扬帆去,蟾蜍亏复圆。” ——唐贾岛 《忆江上吴处士》 人类探索海洋的脚步从未停止。昔日,闽地的先民眺望浩瀚大海,叹其无垠难测;如今,海洋科学与人工智能的交叉融合正引领着新一轮的探索浪潮,成为不…

智能学习系统

摘 要 随着信息技术和网络技术的飞速发展,人类已进入全新信息化时代,传统管理技术已无法高效,便捷地管理信息。为了迎合时代需求,优化管理效率,各种各样的智能学习系统应运而生,各行各业相继进入信息管理时…

高性价比运动耳机有哪些?五大高性价比运动耳机分享

对于很多人来说,音乐都是日常生活中不可或缺的一部分,在路上随处可见戴着耳机的人打发无聊的时间。相对于传统的入耳式耳机来说,市面上涌现了一批开放式耳机,它们凭借其开放不塞耳的特性,能够适应多种场景,…

telegraf、influxdb、grafana安装配置

InfluxDB(时序数据库),常用的一种使用场景:监控数据统计。 grafana,用作监控页面的前端展示。 telegraf,数据采集器。 一、Influxdb安装及配置 下载:wget https://dl.influxdata.com/influx…

RFID无线测温系统,守护电厂安全运行的关键力量

一、RFID无线测温系统概述 RFID无线测温系统主要由传感器、数据传输装置和监控中心三部分组成。 传感器是系统的感知前端,通常采用RFID技术,能够实时感知温度变化。例如,在一些应用中,RFID传感器可以安装在电力设备的关键部位&a…

【Python快速入门和实践014】Python常用脚本-批量重命名指定文件夹下文件名字

一、功能讲解 这段代码是一个用于批量重命名文件的Python脚本。它的主要功能是在文件名前添加一定数量的前导零,使得所有文件名的长度保持一致。这对于管理大量文件,特别是当文件名需要按照特定顺序排列时非常有用。 导入必要的模块: os: 用于…

SiLM5932SHO系列SiLM5932SHOCG-DG 12A/12A强劲驱动电流能力 支持主动短路保护功能(ASC)单通道隔离门极驱动器

SiLM5932SHO系列是一款单通道隔离驱动器,提供12A源电流和12A灌电流。主动保护功能包括退饱和过流检测、UVLO、隔离故障报警和 4A 米勒钳位。输入侧电源的工作电压为3V至5.5V,输出侧电源的工作电压范围为13V至30V。所有电源电压引脚都有欠压锁定 (UVLO) 保…

golang基于WMI获取所有外接硬盘(USB,移动硬盘)信息

golang基于WMI获取所有外接硬盘(USB,移动硬盘)信息 package mainimport ("fmt""regexp""github.com/StackExchange/wmi""github.com/shirou/gopsutil/v3/disk" )// 定义 WMI 类结构体 type Win32_LogicalDiskToPartition struct {Ant…

Alleviating Hallucination in Multi-Modal Large Language Models

OPERA: Alleviating Hallucination in Multi-Modal Large Language Models via Over-Trust Penalty and Retrospection-Allocation 文章汇总 当前的问题发现 如图,在模型生成幻觉内容时,最后一层的 Self-Attention 权重大概率会在幻觉部分之前呈现出明…

【el-table】横向滚动条加粗后,滚动到固定列下被遮挡,已解决

横向滚动条按要求加粗后,遇到的问题:列表的操作列是固定在最右侧的,当滚动条滑动到最右侧的时候,滚动条被遮挡了 我尝试了几种方法都不行,比如找到.el-table__fixed-right .el-table__fixed-footer-wrapper &#xff…

LoadRunner12添加集合点

集合点的含义和意义: 集合点用于保证真正的并发。当脚本运行到集合点函数时,将停止运行并等待其允许运行的条件(即集合点策 略),达到后才释放集合点开始运行。用来分析软件性能瓶颈。 一般将集合点放在开始事务代码之前。 通常来说集合点不需…

Vue2 axios

1.安装引入 axios npm i axios 2.配置代理 1.配置代理(方式一) module.exports {devServer: {proxy: http://localhost:5000} } 1.发送ajax请求 getStudent(){axios.get(http://localhost:8080/students).then(res>{console.log(请求成功了,res.data);},error>{co…