我有一个代码,基本上需要两个图像,大图像和小图像。小图像被缩小成一行图像,然后从大图像的每一行中减去。结果应该是不同价值观的新的大形象。你知道吗
两个图像都是nArray(超过2维)。 当我在一行上运行此代码时,它可以工作,但是当我尝试使用for循环以便在图像中的所有行上运行它时,它永远不会停止。你知道吗
图像的详细信息: -大图像当前有11行1024列。 -缩小后的小图像只有1行1024列。你知道吗
代码如下:
import spectral.io.envi as envi
import matplotlib.pyplot as plt
import os
from spectral import *
import numpy as np
#Create the image path
#the path
img_path = r'N:\path\Image_Python\13-8-2019\emptyname_2019-08-13_11-05-46\capture'
resized_path=r'N:\path\Image_Python'
#the specific file
img_dark= 'DARKREF_emptyname_2019-08-13_11-05-46.hdr'
resized_file='resize3.hdr'
#load images
img_dark= envi.open(os.path.join(img_path,img_dark)).load()
resized= envi.open(os.path.join(resized_path,resized_file)).load()
wavelength=[float(i) for i in resized.metadata['wavelength']]
#reduce image into 1 row
dark_1024=img_dark.mean(axis=0)
#the follow command works and was compared with the image in ENVI
#resized[0] suppoose to be row no. 0 in image resized
#so the problem is in the for loop
resized[0]-dark_1024
#Here I have tried to run at the beginning my computation but then it took too much so I tried to run #this count in order to see how many rows it iterate through
#I have tried this also with a== 3,000,000 and it got there
a=0
for i in resized[0,1]:
a=a+1
print(a)
if a==8000:
break
我的最终目标是能够使用for loop为n维图像中的每一行运行“resize-dark_”过程
澄清: 每当我跑步时:
resized[i]-dark_1024[i]
当我是一个数字。例如i=3,i-4。。。你知道吗
它起作用了
编辑2:如果我用深色的\u1024运行这个,它有1行1024像素:
a=0
for i in dark_1024:
a=a+1
print(a)
if a==8000:
break
数到1024:
一个简单的方法来实现你想要的是使用numpy的广播功能。例如,我将创建一个伪
dark
数组。你知道吗为了能够从
img
的所有行中减去dark
,我们只需要为第一个维度创建一个虚拟索引,以便numpy可以广播操作。你知道吗为了验证它是否有效,请确保跨多行的
y
和img
之间的差异等于dark
。你知道吗相关问题 更多 >
编程相关推荐