저는 파이썬에 조금 익숙하며 OpenAI에서 miniWOB로 작업하고 있습니다. 내 에이전트가 내 관찰 내용을 cv2로 인쇄하고 싶습니다. 그러나 실제로는 중요하지 않습니다. 내 문제는 내 "관측"을 위해 체육관에서받은 데이터 유형을 정확하게 알 수 없다는 것입니다. 그러나 나는 그것을 단순한 3D 차원 배열로 원합니다. 이 형식은 cv2를 사용하여 인쇄 할 수 있습니다. 그래서 아무도 내 < 클래스 '목록> 관찰을 변환 할 수 있습니다 : < 유형 nunpy.ndarray>? 나는 이미 관측 = np.asarray (관측)를 시도했다. 그러나이 에러를 얻었다. "mat data type = 17".<class 'list'>를 numpy.ndarray로 변환하십시오.
import cv2
import random
import gym
import universe
import go_vncdriver
import numpy as np
def main():
env = gym.make('wob.mini.ClickTest-v0')
env.configure(remotes=1) # create one flashgames Docker container
observation = env.reset()
while True:
env.render()
x = 110
y = 270
action_n = [universe.spaces.PointerEvent(x, y, 1), universe.spaces.PointerEvent(x, y, 0),
universe.spaces.PointerEvent(x, y, 1)]
action_n = [action_n for ob in observation]
observation, reward_n, done_n, info = env.step(action_n)
observation = np.asarray(observation) #this one converts to nd array but then I got the mat data type = 17 error
if (observation != None):
print(type(observation))
cv2.imshow('pong voor net', observation)
cv2.waitKey(0)
cv2.destroyAllWindows()
main()
나는이 나타납니다
나는이 유형으로 변환 할[{'vision': array([[[0, 0, 0],
[0, 0, 0],
[0, 0, 0],
...,
[0, 0, 0],
[0, 0, 0],
[0, 0, 0]],
[[0, 0, 0],
[0, 0, 0],
[0, 0, 0],
...,
[0, 0, 0],
[0, 0, 0],
[0, 0, 0]],
[[0, 0, 0],
[0, 0, 0],
[0, 0, 0],
...,
[0, 0, 0],
[0, 0, 0],
[0, 0, 0]],
...,
[[0, 0, 0],
[0, 0, 0],
[0, 0, 0],
...,
[0, 0, 0],
[0, 0, 0],
[0, 0, 0]],
[[0, 0, 0],
[0, 0, 0],
[0, 0, 0],
...,
[0, 0, 0],
[0, 0, 0],
[0, 0, 0]],
[[0, 0, 0],
[0, 0, 0],
[0, 0, 0],
...,
[0, 0, 0],
[0, 0, 0],
[0, 0, 0]]], dtype=uint8), 'text': []}]
:
[[[144 72 17]
[144 72 17]
[144 72 17]
...,
[144 72 17]
[144 72 17]
[144 72 17]]
[[144 72 17]
[144 72 17]
[144 72 17]
...,
[144 72 17]
[144 72 17]
[144 72 17]]
[[144 72 17]
[144 72 17]
[144 72 17]
...,
[144 72 17]
[144 72 17]
[144 72 17]]
고마워요! 이 간단한 코드가 트릭을 만들었습니다. – lambotje