Файл "E: \ python \ lib \ re.py", строка 229, в finditer возвращает _compile (pattern, flags) .finditer (string) TypeError: ожидаемая строка или байтовоподобный объект - PullRequest
0 голосов
/ 09 сентября 2018

Я работаю с skimage.feature.greycomatrix, чтобы вычислить GLCM (матрицу совпадений уровня серого) изображения, но когда я использую:

from skimage.feature import greycomatrix 

в python 3.6.4 оболочке - все работает. См. Изображение

Но когда я использую его в своем возвышенном тексте 3, тогда сообщит об ошибке:

Traceback (most recent call last):
  File "C:\Users\Martin Ma\Desktop\every day python\test\GLCM\main.py", line 80, in <module>
    from skimage.feature import greycomatrix
  File "E:\python\lib\site-packages\skimage\feature\__init__.py", line 9, in <module>
    from .peak import peak_local_max
  File "E:\python\lib\site-packages\skimage\feature\peak.py", line 3, in <module>
    from ..segmentation import relabel_sequential
  File "E:\python\lib\site-packages\skimage\segmentation\__init__.py", line 1, in <module>
    from .random_walker_segmentation import random_walker
  File "E:\python\lib\site-packages\skimage\segmentation\random_walker_segmentation.py", line 43, in <module>
    from ..filters import rank_order
  File "E:\python\lib\site-packages\skimage\filters\__init__.py", line 3, in <module>
    from .edges import (sobel, sobel_h, sobel_v,
  File "E:\python\lib\site-packages\skimage\filters\edges.py", line 17, in <module>
    from ..restoration.uft import laplacian
  File "E:\python\lib\site-packages\skimage\restoration\__init__.py", line 12, in <module>
    from .inpaint import inpaint_biharmonic
  File "E:\python\lib\site-packages\skimage\restoration\inpaint.py", line 9, in <module>
    from ..measure import label
  File "E:\python\lib\site-packages\skimage\measure\__init__.py", line 6, in <module>
    from ._regionprops import regionprops, perimeter
  File "E:\python\lib\site-packages\skimage\measure\_regionprops.py", line 645, in <module>
    _install_properties_docs()
  File "E:\python\lib\site-packages\skimage\measure\_regionprops.py", line 632, in _install_properties_docs
    prop_doc = _parse_docs()
  File "E:\python\lib\site-packages\skimage\measure\_regionprops.py", line 625, in _parse_docs
    doc, flags=re.DOTALL)
  File "E:\python\lib\re.py", line 229, in finditer
    return _compile(pattern, flags).finditer(string)
TypeError: expected string or bytes-like object

(см. Изображение ошибки Sublime Text)

Может кто-нибудь сказать мне, почему это происходит и как я могу это решить?

Мой код:

from skimage.feature import greycomatrix
import numpy as np 

image=np.array([[1,1,5,6,8],
                [0,0,5,7,1],
                [4,0,0,1,2],
                [8,5,1,2,5]],dtype=np.uint8)
#levels=256   image   this test is 9
result=greycomatrix(image,[1],[0,np.pi/4,np.pi/2,3*np.pi/4],levels=9)
print(result[:, :, 0, 0])

введите описание изображения здесь

1 Ответ

0 голосов
/ 10 сентября 2018

Вы запускали Python с флагом -OO, который отбрасывает строки документации, заменяя их на None. skimage.measure._regionprops включает код , который во время инициализации анализирует строку документации одной функции, чтобы установить строки документации группы других функций. Это терпит неудачу, когда строки документации были отброшены. Запуск Python без флага -OO позволяет избежать этой проблемы.

Похоже, подобные проблемы могли встречаться и исправляться в других частях кодовой базы scikit-image; Я вижу несколько мест, которые уже проверяют наличие строк документации None, например, skimage.io. Чтобы сделать skimage.measure._regionprops совместимым с -OO, аналогичная проверка для строки документа None должна быть добавлена ​​к этому модулю. _install_properties_docs делает немного больше, чем просто обработка строк документации, поэтому мы не можем просто пропустить все это, если у нас нет строк документации.

...