【发布时间】:2017-06-29 18:31:15
【问题描述】:
我有一个代码通知文件夹,其中包含n 图像,该代码应返回相对频率直方图。
从那里我有一个函数调用:
for image in total_images:
histogram(image)
其中image 是代码正在处理的当前图像,total_images 是它在之前通知的文件夹中的图像总数 (n)。
然后我调用histogram() 函数,将代码正在运行的当前图像作为参数发送。
我的histogram()函数的目的是返回每张图像的相对频率的直方图(rel_freq)。
虽然返回值是正确的,但rel_freq应该是一个1x256位置的数组,范围从0到255。
如何将 rel_freq 变量转换为 1x256 数组?并且每个值都存放在其对应的位置?
当我执行 len *rel_freq) 时,它返回 256,那时我意识到它不是我需要的格式...
再一次,虽然返回的数据是正确的……
之后,我需要创建一个数组store_all = len(total_images)x256来保存所有rel_freq...
我需要将所有rel_freq 保存在一个数组中,以便以后将其保存到一个外部文件中,例如.txt。
我正在考虑创建另一个函数来执行此操作...
类似的东西,但我不知道如何正确地做,但我相信你会明白其中的逻辑......
def store_all_histograms(total_images):
n = len(total_images)
store_all = [n][256]
for i in range(0,n):
store_all[i] = rel_freq
我知道函数store_all_histograms() 是错误的,我只是在这里写它以或多或少地显示我正在考虑的方式......但同样,我不知道如何正确地做到这一点......在此时,我得到的错误是:
store_all = [n][256]
IndexError: list index out of range
毕竟,我需要store_all 变量来保存所有相对频率直方图,例如:
position: 0 ... 256
store_all = [
[..., ..., ...],
[..., ..., ...],
.
.
.
n
]
现在跟随这段代码:
def histogram(path):
global rel_freq
#Part of the code that is not relevant to the question...
rel_freq = [(float(item) / total_size) * 100 if item else 0 for item in abs_freq]
def store_all_histograms(total_images):
n = len(total_images)
store_all = [n][256]
for i in range(0,n):
store_all[i] = rel_freq
#Part of the code that is not relevant to the question...
# Call the functions
for fn in total_images:
histogram(fn)
store_all_histograms(total_images)
我希望我已经弄清楚了这个问题。
提前谢谢,如果您需要任何其他信息,可以问我...
【问题讨论】:
-
“当我执行 len (rel_freq) 时它返回 256,那时我意识到它不是我需要的格式...”你对 1x256 数组有什么期望?
len是一个 python 内置函数。 -
欢迎堆栈溢出。较长的问题不一定比简短的问题好。我很难理解你的问题的重要部分是什么。这是写好问题的指南:How to Ask
-
@roganjosh 我需要这个,因为我稍后会将直方图的值放入多层感知器中,看看它是否能够对我的图像进行分类。
-
@HåkenLid 谢谢和抱歉。
-
没关系。我可能不清楚; 1x256 数组的
len将只显示256,因此即使它是numpy数组,len也会将其视为(必要时嵌套,它不在这里)列表。这并不表示出现任何问题。正如@HåkenLid 所说,您的问题很长,这是我提出的第一个问题。
标签: python arrays python-2.7 list