resize()Python

时间:2017-12-17 10:48:46

标签: python opencv image-processing

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

  1. 我已经分配了图像的位置(我开始使用 仅考虑4张图片。)
  2. imstack用于读取一个图像(作为基本图像) 将进行停留(叠加)。
  3. 运行for循环,遍历所有图像并将其添加到 基本图像(imstack)。这个添加是通过使用 addWeighted()函数,参数为当前图像(im) 以及alpha值为0.5的基本图像(imstack) 分别
  4. 循环运行直到完成(所有图像都是 叠加在基本图像上)我试图打印更新的imstack as' compiledimg'通过使用imshow()。
  5. 此外,我添加了保存' compiledimg'档案 迫切的'
  6. 错误:

    imstack = cv2.resize(imstack,(97113)) 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()
    

1 个答案:

答案 0 :(得分:0)

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

  1. 纠正了我做路径的方式。阅读更多内容并最终完成。

  2. 我必须检查天气读数输入是否正在读取imstack,因为之前我的路径是错误的,所以它被输入为NULL因此错误。

  3. 其中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