opencv TypeError: 'interpolation' является недопустимым аргументом ключевого слова для этой функции - PullRequest
0 голосов
/ 23 апреля 2020

Произошла ошибка при попытке изменить размер изображения с помощью "interpolation = cv2.INTER_CUBI C". Я не знаю, что случилось. Я просто следую инструкции на https://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_imgproc/py_geometric_transformations/py_geometric_transformations.html?highlight=resize

# from PIL import Image
import cv2

def read_img(frompath):
    # return Image.open(frompath)
    return cv2.imread(frompath)

def resize_one(img, size, outpath):
    # out = img.resize(size)
    # out.save(outpath)
    out = cv2.resize(img, size)
    cv2.imwrite(outpath, out, interpolation=cv2.INTER_CUBIC)

def resize_all(img, tasks):
    for (size, outpath) in tasks:
        resize_one(img, size, outpath)

def build_tasks(prefix, sizes):
    t = []
    for (x, y) in sizes:
        t.append(((x, y), prefix + '_' + str(x) + '_' + str(y) + '.png'))
    return t

def square_tasks(widths):
    t = []
    for w in widths:
        t.append((w, w))
    return t

def main():
    s = [72, 48, 96, 144, 192]
    p = 'logo'
    i = './logo_1280.png'
    t = build_tasks(p, square_tasks(s))
    img = read_img(i)
    resize_all(img, t)

if __name__ == '__main__':
    main()
libpng warning: iCCP: known incorrect sRGB profile
Traceback (most recent call last):
  File ".\main.py", line 39, in <module>
    main()
  File ".\main.py", line 36, in main
    resize_all(img, t)
  File ".\main.py", line 16, in resize_all
    resize_one(img, size, outpath)
  File ".\main.py", line 12, in resize_one
    cv2.imwrite(outpath, out, interpolation=cv2.INTER_CUBIC)
TypeError: 'interpolation' is an invalid keyword argument for this function

Я использую opencv-contrib- python 4.2.0.34

1 Ответ

2 голосов
/ 23 апреля 2020

Вы должны выполнить интерполяцию в resize вместо вашего imwrite.

def resize_one(img, size, outpath):
    # out = img.resize(size)
    # out.save(outpath)
    out = cv2.resize(img, size,  interpolation=cv2.INTER_CUBIC )
    cv2.imwrite(outpath, out)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...