resize()Python中的OpenCV错误

问题描述 投票:-2回答:1

我想叠加一组给定的相同尺寸的图像(AT&T面部图像数据库)。我已编写代码来执行此操作,其工作方式如下:

  1. 我已经分配了图像的位置(开始时我只考虑4张图像)。
  2. imstack用于读取将在其上发生停留(叠加)的一个图像(作为基本图像)。
  3. 运行for循环,遍历所有图像并将它们添加到基本图像(imstack)。这种添加是通过使用addWeighted()函数完成的,其中参数为当前图像(im),基本图像(imstack)的alpha值分别为0.5。
  4. 循环运行直到完成(所有图像叠加在基本图像上)后,我尝试使用imshow()将更新的imstack打印为'compiledimg'。
  5. 此外,我添加了通过按's'保存'compiledimg'文件的选项。

错误:

imstack = cv2.resize(imstack,(97,113))cv2.error:/build/opencv-RI6cfE/opencv-2.4.9.1+dfsg1/modules/imgproc/src/imgwarp.cpp:1834:错误:(-215)ssize .area()> 0在函数调整大小

import cv2 
import numpy as np
import os

fnames =['~/Downloads/1.pgm','~/Downloads/2.pgm','~/Downloads/3.pgm']

imstack=cv2.imread('~/Downloads/4.pgm')

imstack=cv2.resize(imstack,(97,113))

for path in fnames:
  im=cv2.imread(os.path.expanduser(path))

  imstack=cv2.addWeighted(imstack,0.5,im,0.5,0)

  imstack=cv2.resize(imstack,(97,113))

cv2.imshow('compiledimg.jpg',imstack)

k = cv2.waitKey(0) & 0xFF

if k == 27:         
  cv2.destroyAllWindows()

elif k == ord('s'): 
  cv2.imwrite('compiledimg.jpg',imstack)
cv2.destroyAllWindows()
python opencv image-processing
1个回答
0
投票

我能够摆脱这个错误。主要是我犯了两个错误:

  1. 纠正了我做道路的方式。阅读更多内容,最后完成它。
  2. 我必须检查天气读数输入是否正在读取imstack,因为之前我的路径是错误的,所以它被输入为NULL因此错误。

其中4.pgm是基本图像,而2.pgm是我将使用测试的图像,所以我没有把它包含在将被覆盖的图像的路径中。

代码的临时部分如下:

path='test/'

#Appends all the absolute paths in the list image_paths 
image_paths = [os.path.join(path, f) for f in os.listdir(path) if not f.endswith('2.pgm')]

#initializing a base_image over which other images will be superimposed
base_image=cv2.imread('4.pgm')

#resizing the base image so it matches the size of the database pics (113(rows),97(columns))
base_image=cv2.resize(base_image,(97,113))

#cv2.imshow('lol',base_image) //for testing purposes
© www.soinside.com 2019 - 2024. All rights reserved.