«Системная ошибка: новый стиль getargs, но аргумент не является кортежем» при использовании cv2.blur

Я просто пытаюсь применить фильтр к изображению, используя cv2, привязки python opencv. Вот как выглядит мой код:

im = cv2.imread('./test_imgs/zzzyj.jpg') cv2.imshow('Image', cv2.blur(im, 2) cv2.waitKey(0) 

Это почти копия и вставка из документации . Тем не менее, это просто не работает, без лишних следов, чем это сообщение:

 SystemError: new style getargs format but argument is not a tuple 

Такая же ошибка возникает с GaussianBlur, но не со срединным Blur. Есть предположения?

  • Открыть IPython Notebook 2.7 и 3.4 в параллельном режиме
  • Проверка наличия таблицы postgresql в python (и, вероятно, Psycopg2)
  • Как установить значения по умолчанию атрибута в декларации sqlalchemy?
  • Разбор DD MM YY HH MM Столбцы SS из TXT-файла с использованием панд Python
  • Модуль _functools
  • Преобразование формата данных PANDAS с ежемесячного на ежедневный
  • Ненужный срез произвольных размеров
  • Извлечение IP из запроса в Python
  • 2 Solutions collect form web for “«Системная ошибка: новый стиль getargs, но аргумент не является кортежем» при использовании cv2.blur”

    Для cv2.blur вам нужно указать ksize как кортеж из двух элементов, например (2,2). Но для medianBlur достаточно ksize = 3. Он вычитает из него квадратное ядро.

    Поэтому сделайте код следующим образом:

     im = cv2.imread('./test_imgs/zzzyj.jpg') cv2.imshow('Image', cv2.blur(im, (3,3))) cv2.waitKey(0) cv2.destroyAllWindows() 

    Надеюсь, это сработает !!!

    У меня такая же проблема при обновлении подушки с 2.8.1 до 4.1.0 .

    Вот фрагмент кода примера, который будет генерировать исключение при запуске Pillow==4.1.0 :

     from PIL import Image img = Image.new('RGBA', [100,100]) # An empty mask is created to later overlay the original image (img) mask = Image.new('L', img.size, 255) # Get transparency (mask) layer pixels, they will be changed! data = mask.load() # The function used later def foo(x,y): return round(1.0*x/(y+1)) # Update all pixels in the mask according to some function (foo) for x in range(img.size[0]): for y in range(img.size[1]): data[x,y] = foo(x,y) 

    Вывод:

     Traceback (most recent call last): File "x.py", line 12, in <module> data[x,y] = foo(x,y) SystemError: new style getargs format but argument is not a tuple 

    Фактическая ошибка здесь не имеет ничего общего с тем, что указано в исключении. Фактически это тип данных, назначенных неверным данным. В 2.8.1 действительны как int и float , поэтому такие вещи, как data[x,y]=1.0 , действительны, в то время как в 4.1.0 вам нужно использовать целые числа, подобные любому из этого:

     data[x,y]=1 data[x,y]=int(1.0) 

    Таким образом, в приведенном выше примере foo может быть переопределен следующим образом для работы в 2.8.1 и 4.1.0 :

     def foo(x,y): return int(round(1.0*x/(y+1))) 
    Python - лучший язык программирования в мире.