В OpenCV заданные пороговые параметры (например, cv.THRESH_BINARY или cv.THRESH_BINARY_INV) на самом деле являются постоянными целочисленными значениями. Вы пытаетесь использовать строки вместо этих целочисленных значений. Это причина, почему вы получаете ошибку типа. Если вы хотите применить все эти различные пороговые значения в al oop, один из вариантов - создать другой список для этих параметров, например:
threshold_options = [cv.THRESH_BINARY, cv.THRESH_BINARY_INV, ...]
Таким образом, вы можете использовать значения этого список в l oop выглядит следующим образом:
retval, thresh = cv.threshold(img, 127, 255, threshold_options[i])
Весь код будет выглядеть следующим образом:
titles = [ 'THRESH_BINARY',
'THRESH_BINARY_INV',
'THRESH_MASK',
'THRESH_OTSU',
'THRESH_TOZERO',
'THRESH_TOZERO_INV',
'THRESH_TRIANGLE',
'THRESH_TRUNC']
threshold_options = [ cv.THRESH_BINARY,
cv.THRESH_BINARY_INV,
cv.THRESH_MASK,
cv.THRESH_OTSU,
cv.THRESH_TOZERO,
cv.THRESH_TOZERO_INV,
cv.THRESH_TRIANGLE,
cv.THRESH_TRUNC]
for i in range(len(titles)):
retval, thresh = cv.threshold(img, 127, 255, threshold_options[i])
plt.subplot(2,3,i+1), plt.title(titles[i]), plt.imshow(thresh, 'gray')
plt.show()