我编写了遍历低分辨率图像的每个像素的代码,并将每个像素的色相,饱和度和亮度级别(HSL)存储在数组中。现在,我想遍历所有这些HSL级别,以确定它最接近哪种颜色,并将此信息存储到一个新数组中。我已经编写了这段代码:
arrayCol = np.zeros((sHeight,sWidth), dtype = str)
for y in range(sHeight):
for x in range(sWidth):
#for n in range(3):
if arrayHSL[y][x][2] <= 10:
if arrayHSL[y][x][2] <= 10:
arrayCol[y][x] = 'blk'
print(arrayCol)
,如果亮度低于特定阈值,则将像素分配为“ blk”或“黑色”。但是,在打印和查看数组时,与其在正确的位置显示“ blk”,不如在输出中看到的第一个字母“ b”:
[['' '' '' '' '' 'b' 'b' 'b' 'b' 'b' 'b' 'b' 'b' 'b' '' 'b' '' '' '' '']
['' '' '' '' '' '' 'b' 'b' 'b' 'b' '' 'b' 'b' '' '' '' '' '' '' '']
['b' '' '' '' '' '' '' '' 'b' 'b' 'b' 'b' 'b' '' '' '' '' '' '' '']
['' '' '' '' '' '' '' '' '' 'b' 'b' 'b' '' '' '' '' '' '' '' '']
['' '' '' '' '' '' '' '' '' '' 'b' '' '' '' '' '' '' '' '' '']
['' '' '' '' '' 'b' '' '' '' '' '' 'b' '' '' '' '' '' '' '' '']
['' 'b' '' 'b' '' '' '' '' '' '' 'b' 'b' '' '' '' '' '' '' '' '']
['' '' '' 'b' '' 'b' '' '' '' '' '' '' '' 'b' '' '' '' '' '' '']
['' '' 'b' '' '' 'b' 'b' 'b' '' '' '' '' '' 'b' '' '' '' '' '' '']
['' '' 'b' 'b' '' 'b' '' 'b' '' 'b' 'b' '' 'b' 'b' '' '' '' '' '' '']
['b' '' 'b' '' 'b' '' '' '' 'b' 'b' '' 'b' 'b' 'b' '' '' '' 'b' '' '']
['b' 'b' 'b' 'b' 'b' 'b' 'b' '' '' '' '' 'b' '' 'b' '' '' '' '' '' '']
将名称“ blk”更改为其他名称(例如“ rlk”)的操作相同,仅显示“ r”。这不是什么大问题,但是一旦我开始实现其他颜色(例如蓝色或棕色),我和Python都将无法区分它们。所以我的问题是如何获取数组来存储颜色的全名,而不仅仅是第一个字母?谢谢
答案 0 :(得分:0)
如果键入arrayCol.dtype
,则应打印dtype('S1')
,表示长度为1的字符串。
您可以为固定长度指定dtype='s256'
或为任意长度字符串指定dtype=object
。
arrayCol = np.zeros((sHeight,sWidth), dtype = object)
答案 1 :(得分:0)
这里有一个类似的问题:Weird behaviour initializing a numpy array of string data
您必须将dtype=str
替换为dtype='S[number of characters]'
,对于'blk',其替换为dtype='S3'
根据ArmorK的回答,您还可以将dtype=object
用于任意长度的字符串。