Это правильный результат.Ваше изображение является двухуровневым, оно имеет только значения 0 и 255, поэтому 0 - это пороговое значение, при котором изображение будет правильно разделено на два значения при выполнении следующего шага:
threshold = filters.threshold_otsu(img)
binary = im > threshold
Попробуйте самис какими-то манекенами "images" :
filters.threshold_otsu(np.array([0,255],dtype=np.uint8))
0
filters.threshold_otsu(np.array([7,12],dtype=np.uint8))
7
filters.threshold_otsu(np.array([7,8,11,12],dtype=np.uint8))
8