Привет! У меня есть набор изображений, сохраненных в виде элементов списка, и я хочу прочитать изображения по одному и выполнить некоторые операции с ним. Я не могу понять, как перебирать каждый элемент изображения в списке. Я могу прочитать их явно из папки, используя cv2.imread
, но я хочу использовать элемент списка, в котором они хранятся.
Я пытаюсь прочитать выровненные изображения, которые я сохранил в элементе списка«Выравнивание». Подпрограмма, которую я использовал для выравнивания изображения, такова:
def stackImagesECC(file_list):
M = np.eye(3, 3, dtype=np.float32)
first_image = None
stacked_image = None
align = []
for file in file_list:
image = cv2.imread(file,1).astype(np.float32) / 255
print(file)
if first_image is None:
# convert to gray scale floating point image
first_image = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)
stacked_image = image
else:
# Estimate perspective transform
s, M = cv2.findTransformECC(cv2.cvtColor(image,cv2.COLOR_BGR2GRAY), first_image, M, cv2.MOTION_HOMOGRAPHY)
w, h, _ = image.shape
# Align image to first image
image = cv2.warpPerspective(image, M, (h, w))
align.append(image)
stacked_image += image
# cv2.imwrite("aligned{}/aligned{}.png".format(file), image)
cv2.imshow("aligned", image)
# cv2.imwrite("output/aligned/",image)
cv2.waitKey(0)
stacked_image /= len(file_list)
stacked_image = (stacked_image*255).astype(np.uint8)
return align
И затем я вызвал эту функцию, используя:
align = stackImagesECC(glob.glob(path))
Теперь, чтобы выполнить некоторые функции, я пытаюсь прочитать этифайлы из переменной выравнивания.
#function to detect edges in images
def auto_canny(image, sigma=0.33):
# Compute the median of the single channel pixel intensities
img = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)
v = np.median(image)
# Apply automatic Canny edge detection using the computed median
lower = int(max(0, (1.0 - sigma) * v))
upper = int(min(255, (1.0 + sigma) * v))
return cv2.Canny(image, lower, upper)
это подпрограмма обнаружения края, для которой я хочу прочитать выровненные изображения
for file in range(0,len(align)):
img = cv2.imread(file)
Может кто-нибудь подсказать, что я делаю неправильно? Заранее спасибо!