【问题标题】:how to stack image files in to one file and how to resize black and white images如何将图像文件堆叠到一个文件中以及如何调整黑白图像的大小
【发布时间】:2019-10-14 07:16:12
【问题描述】:

我的图片看起来像这样enter image description here 我正在尝试将图像文件堆叠到一个文件中,并将黑白图像的大小调整为 1000X1000。但我没有得到,我有大小为 600X400 的图像,但我需要它到 1000 像素大小,请帮助我怎么做。 这是我的图片加载:

 import cv2
    import glob
    img= [cv2.imread(file) for file in glob.glob('C:/Users/NanduCn/jupter1/deepl/challenges-master/ML/stack1/*jpg')]
img2= [cv2.imread(file) for file in glob.glob('C:/Users/NanduCn/jupter1/deepl/challenges-master/ML/stack2/*jpg')]
img3= [cv2.imread(file) for file in glob.glob('C:/Users/NanduCn/jupter1/deepl/challenges-master/ML/stack3/*jpg')]
img4= [cv2.imread(file) for file in glob.glob('C:/Users/NanduCn/jupter1/deepl/challenges-master/ML/stack4/*jpg')]

这里我将所有图像放入一个列表中:

img=img1+img2+img3+img4

我在这里调整图像大小:

im_g=cv2.resize(img,(1000,1000))
--------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-69-56a6794f0ec5> in <module>()
----> 1 im_g=cv2.resize(img,(1000,1000))

TypeError: src is not a numpy array, neither a scalar

【问题讨论】:

  • 你意识到缩进在 Python 中很重要吗?

标签: opencv image-processing deep-learning computer-vision cv2


【解决方案1】:

在您的代码中,img1、img2、img3、img4 是列表。当您使用 + 运算符时,它们以列表方式堆叠。

例如,每个文件夹(stack1,stack2,...)中有N张大小为(h,w)的图片,img1的形状为(N,h,w)。但是img1+img2的形状是(2N,h,w)。请改用 numpy 数组。

import cv2
import glob
import numpy as np

img1 = np.array([cv2.imread(file) for file in glob.glob('C:/Users/NanduCn/jupter1/deepl/challenges-master/ML/stack1/*jpg')])
img2 = np.array([cv2.imread(file) for file in glob.glob('C:/Users/NanduCn/jupter1/deepl/challenges-master/ML/stack2/*jpg')])
img3 = np.array([cv2.imread(file) for file in glob.glob('C:/Users/NanduCn/jupter1/deepl/challenges-master/ML/stack3/*jpg')])
img4 = np.array([cv2.imread(file) for file in glob.glob('C:/Users/NanduCn/jupter1/deepl/challenges-master/ML/stack4/*jpg')])

imgs = list(img1+img2+img3+img4)

for img in imgs:
    im_g = cv2.resize(img,(1000,1000))

文件夹中有多少个文件(stack1、stack2、...)? 在您使用 glob 的方式中,结果将是多个文件。您必须再添加一个步骤,将文件夹中的文件堆叠起来。

如果想要的结果只有一个文件,试试这个。

import cv2
import glob
import numpy as np

img1 = [cv2.imread(file) for file in glob.glob('C:/Users/NanduCn/jupter1/deepl/challenges-master/ML/stack1/*jpg')]
img2 = [cv2.imread(file) for file in glob.glob('C:/Users/NanduCn/jupter1/deepl/challenges-master/ML/stack2/*jpg')]
img3 = [cv2.imread(file) for file in glob.glob('C:/Users/NanduCn/jupter1/deepl/challenges-master/ML/stack3/*jpg')]
img4 = [cv2.imread(file) for file in glob.glob('C:/Users/NanduCn/jupter1/deepl/challenges-master/ML/stack4/*jpg')]

imgs = (img1+img2+img3+img4)
stacked_img = np.array(img1[0])
for img in imgs[1:]:
    stacked_img += np.array(img)
im_g = cv2.resize(stacked_img,(1000,1000))

注意:您可能希望标准化(平均)堆叠图像的值。

【讨论】:

    猜你喜欢
    • 2013-06-06
    • 2010-12-18
    • 1970-01-01
    • 2010-11-30
    • 1970-01-01
    • 1970-01-01
    • 2011-08-20
    • 2014-10-29
    • 1970-01-01
    相关资源
    最近更新 更多