Для первой части я не знаю, почему ваши очки не являются целыми числами.Я скачал маску в вопросе, и этот код можно использовать для печати пар, имеющих значение пикселя = 0.Я прочитал маску в формате оттенков серого.
img = cv2.imread('mask.jpg',0)
for i in range(0,img.shape[0]):
for j in range(0,img.shape[1]):
if img[i,j] == 0:
print(i,j)
Для второй части можно использовать нормальное определение порога.Обратитесь к документации opencv для получения дополнительной информации о thresholding .Я увеличил изображение в 4 раза, чтобы лучше видеть.Затем были созданы два порога, имеющие пороговые значения 16 и 17 и выполняющие поразрядную xor из них для получения результата.
zoom = cv2.resize(img, None, fx = 4, fy = 4, interpolation = cv2.INTER_CUBIC)
ret,thresh1 = cv2.threshold(zoom, 16, 255, cv2.THRESH_BINARY)
ret,thresh2 = cv2.threshold(zoom, 17, 255, cv2.THRESH_BINARY)
output = cv2.bitwise_xor(thresh1, thresh2)
cv2.imshow('threshold with 16', thresh1)
cv2.imshow('threshold with more than 16', thresh2)
cv2.imshow('result', output)
cv2.waitKey(0)
cv2.destroyAllWindows()
![mask with threshold as 16](https://i.stack.imgur.com/jtkcl.png)
Порог 1
![mask with threshold as 17](https://i.stack.imgur.com/lQRmg.png)
Порог 2
![mask with only pixels=16](https://i.stack.imgur.com/9eWAN.png)
Выход