как объединить файлы изображений в один файл и как изменить размер черно-белых изображений - PullRequest
0 голосов
/ 28 мая 2019

здесь мои изображения выглядят так введите описание изображения здесь Я пытаюсь сложить файлы изображений в один файл, а также изменить размер черно-белых изображений 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

1 Ответ

0 голосов
/ 28 мая 2019

В вашем коде img1, img2, img3, img4 являются списками.Когда вы используете оператор +, они складываются в виде списка.

Например, N изображений с размером (h, w) в каждой папке (stack1, stack2, ...), форма img1есть (N, ч, ш).Однако форма 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))

Примечание: вы можете нормализовать (среднее) значение сложенного изображения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...