Я пытаюсь получить маску изображения с несколькими уровнями порогового значения, принимая во внимание интенсивность пикселей, которые я хочу портировать изображение - белый для самых ярких областей, серый для чуть менее ярких областей и черный для относительно темных областей. Я сталкивался с различными статьями о многоуровневом пороге отсу, но не смог найти реализацию, которую мог бы использовать в качестве ссылки. После того, как у меня есть эти маски, я хочу выполнить bitwise_and для этих масок, чтобы получить исходную область изображения для белых и серых областей. Это возможно? В настоящее время я использую ret, thresh_ = cv2.threshold(img, 0, 255, cv2.THRESH_BINARY+cv2.THRESH_OTSU)
для получения масок.
Я пытался явно установить значения с помощью операторов if.
if(thresh_ <=80):
thresh_ = 0
elif(thresh_ >80 & thresh_ <=160):
thresh_ = 150
else:
thresh_ = 255
Но это не сработало, и это далоerror- Значение истинности массива с более чем одним элементом неоднозначно. Используйте a.any () или a.all ()
for file in glob.glob(path):
img = cv2.imread(file)
#edge detection
canny = auto_canny(img)
#Dilation(Morphological function to increase edge width)
img_dilate = cv2.dilate(canny, (3,3), iterations = 1)