порог изображения в skimage или чистом питоне

В одном сегменте кода open cv использует

import cv2
img = cv2.threshold(img, 0.5, 1., cv2.THRESH_BINARY)[1].astype(np.uint8)

Существуют ли в skimage или чистом Python какие-либо эффективные способы или существующие функции, которые достигают той же цели, что и вышеприведенное использование open cv (cv2)?


person user785099    schedule 21.11.2016    source источник
comment
Для тех из нас, кто знает «чистый Python (?)» больше, чем cv2, можете ли вы описать, что он делает? Какова природа img?   -  person hpaulj    schedule 22.11.2016


Ответы (2)


В skimage вы должны использовать skimage.filters, чтобы иметь возможность использовать все доступные функции, связанные с пороговыми значениями.

from skimage import data
from skimage.filters import try_all_threshold

img = data.page()

fig, ax = try_all_threshold(img, figsize=(10, 8), verbose=False)
plt.show()

Посетите ЭТУ СТРАНИЦУ

Суть в том, что в OpenCV задействована только одна функция. В skimage вы должны импортировать модуль filter явно, чтобы выполнять пороговые операции.

* Вы также можете выполнять пороговые операции, используя PIL (библиотека изображений Python).

person Jeru Luke    schedule 12.01.2017

Вот один из способов установить порог, используя только Python (помимо чтения и записи и просмотра результата)

Вход:

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

import cv2

# read image as grayscale
img = cv2.imread('lena.jpg',0)

# threshold
img_thresh = img
img_thresh[ img < 128 ] = 0
img_thresh[ img_thresh >= 128 ] = 255

# view result
cv2.imshow("threshold", img_thresh)
cv2.waitKey(0)
cv2.destroyAllWindows()

# save result
cv2.imwrite("lena_threshold.jpg", img_thresh)


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

person fmw42    schedule 17.09.2019