【问题标题】:How can I insert data from a picture into an 2d array?如何将图片中的数据插入二维数组?
【发布时间】:2020-11-08 07:28:31
【问题描述】:

我正在制作一个可以玩游戏的 AI 连接 4,来自游戏的一种状态的图片,例如:click to see

下面的这个脚本,正在检测图片中的红色元素:

import cv2
import numpy as np
 
img = cv2.imread('connect.png')
 
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
 
#get red color 
lower_range = np.array([169, 100, 100])
upper_range = np.array([189, 255, 255])
 
mask = cv2.inRange(hsv, lower_range, upper_range)
 
cv2.imshow('image', img)
cv2.imshow('mask', mask)
 
cv2.waitKey(0)
cv2.destroyAllWindows()

我想将这些数据插入到一个二维数组中,以便能够将该数组用作游戏状态并确定 AI 应该采取的行动。

我试图在 Stack Overflow 和 Internet 上找到解决方案,但总的来说我没有找到任何相关信息。

【问题讨论】:

  • 你看过这个例子吗docs.opencv.org/master/d4/dc6/…
  • @jayprich 感谢您的回答,这对于按颜色查找所有标记很有用,因为在我的情况下,我可以保存 coin.png 并像示例中一样使用它!

标签: python arrays image numpy


【解决方案1】:

这是一种读取图片并将其转换为 二维 numpy 数组的方法,np.array(in_image):

import numpy as np
import skimage
from skimage import io, transform


path = "C:/my/path/"
pic = 'myPic.png'
imgName = path+pic

in_image_0 = skimage.io.imread(imgName)                   # read the image
in_image_1 = skimage.color.rgb2gray(in_image_0)           # transform it to grey-scale
in_image_2 = skimage.transform.rescale(in_image_1, 0.5)   # change the resolution
in_image_3 = np.flipud(np.array(in_image_2))              # make a numpy array and flip it up/down

【讨论】:

  • 我只想补充一点,您需要像这样打开文件 path =r "C:/my/path/""
  • 但是如何用这种方法确定颜色值是什么以及它在图像中的位置
  • 有很多不同的方法可以做到这一点。搜索skimage color detecting,例如
猜你喜欢
  • 2019-08-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-06
  • 1970-01-01
  • 2013-07-30
  • 1970-01-01
  • 2021-11-02
相关资源
最近更新 更多