OpenCV измените размер изображения, затем примените фильтр - PullRequest
0 голосов
/ 04 августа 2020

Я хотел бы изменить приведенный ниже код, чтобы изменить размер изображения, а затем прочитать его. Если я сделаю это, я получу сообщение об ошибке.

sample = cv2.imread(sample)
TypeError: bad argument type for built-in operation 

Может ли кто-нибудь посоветовать, что мне нужно сделать, чтобы этот код работал, пожалуйста:

def __getitem__(self, idx):
    path = self.files[idx]
    sample = Image.open(path)
    sample = sample.resize((512, 512))
    sample = cv2.imread(path)
  
    # set blue and green channels to 0

    sample[:, :, 0] = 0
    sample[:, :, 1] = 0

1 Ответ

1 голос
/ 04 августа 2020

Сначала убедитесь, что вы правильно указали путь.

Например: я хочу, чтобы все мои .png изображения были в моем каталоге.

  • Я бы используйте тег /*.png, чтобы получить все png из каталога.
from glob import glob

image_files = glob("/Users/ahmettavli/Pictures/*png")

Во-вторых, вы сначала читаете изображение, а затем изменяете его размер.

from cv2 import imread
from cv2 import resize

img = imread(filename=path)
img = resize(src=img, dsize=(512, 512))

Вот пример :

from glob import glob
from cv2 import imread
from cv2 import resize


class ReadImages:
    def __init__(self, files):
        self.files = files

    def __getitem__(self, idx):
        path = self.files[idx]
        img = imread(filename=path)
        img = resize(src=img, dsize=(512, 512))


if __name__ == '__main__':
    image_files = glob("/Users/ahmettavli/Pictures/*png")
    image_object = ReadImages(files=image_files)
    image_object.__getitem__(idx=0)

Вывод:

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