在python中使用opencv库对图像进行阈值化,并使用for循环的不同标志

在python中使用opencv库对图像进行阈值化,并使用for循环的不同标志,python,opencv,image-thresholding,Python,Opencv,Image Thresholding,我将cv2作为cv导入,创建了一个阈值标志列表,将“cv.”与这些标志连接起来,然后创建了一个for循环,用于将这些标志作为参数传递。但是python显示了TypeError。我已经附上了输出的图像。请帮助我使用循环或其他方式创建所有可能的阈值,但每次都明确提到标志除外 []这可能与: 首先,不需要使用范围,只需对标题中的标志执行:并传递标志。您是否已检查图像是否正确加载?您确定您的标志对您的错误负责吗 对于以后的帖子,请提供一个最小的可复制示例。您的代码不起作用,因为标志的类型是int,而不是

我将cv2作为cv导入,创建了一个阈值标志列表,将“cv.”与这些标志连接起来,然后创建了一个for循环,用于将这些标志作为参数传递。但是python显示了TypeError。我已经附上了输出的图像。请帮助我使用循环或其他方式创建所有可能的阈值,但每次都明确提到标志除外

[]

这可能与:

首先,不需要使用
范围
,只需对标题中的标志执行
并传递
标志
。您是否已检查图像是否正确加载?您确定您的标志对您的错误负责吗


对于以后的帖子,请提供一个最小的可复制示例。

您的代码不起作用,因为标志的类型是
int
,而不是
string

您可以打印类型:
print(type(cv.THRESH\u BINARY))

结果是

您可以创建
int
s的列表:

th_flags = [cv.THRESH_BINARY, cv.THRESH_BINARY_INV, cv.THRESH_TRUNC, cv.THRESH_TOZERO, cv.THRESH_TOZERO_INV]

for th in th_flags:
    retval, thresh = cv.threshold(img, 127, 255, th)
    cv.imshow('thresh', thresh)
    cv.waitKey(1000)

cv.destroyAllWindows()
代码没有涵盖所有可能的选项
使用求和可以组合几个标志

例如:

_, thresh = cv.threshold(img, 127, 255, cv.THRESH_BINARY + cv.THRESH_OTSU)

在OpenCV中,给定的阈值选项(例如cv.THRESH_BINARY或cv.THRESH_BINARY_INV)实际上是常量整数值。您正在尝试使用字符串而不是这些整数值。这就是您得到类型错误的原因。如果要在循环中应用所有这些不同的阈值,一个选项是为这些选项创建不同的列表,如下所示:

threshold\u options=[cv.THRESH\u BINARY,cv.THRESH\u BINARY\u INV,…]
这样,您就可以在循环中使用此列表的值,如下所示:

retval,thresh=cv.threshold(img,127255,threshold\u选项[i])
整个代码如下:

titles=['THRESH_BINARY',
“THRESH_BINARY_INV”,
“脱粒面具”,
“打谷大津”,
“打谷到零”,
“打谷至零库存”,
“THRESH_三角形”,
“THRESH_TRUNC”]
阈值_选项=[cv.THRESH_二进制,
cv.THRESH_BINARY_INV,
cv.THRESH_面罩,
品种:THRESH_OTSU,
cv.THRESH_至零,
cv.THRESH_to Zero_INV,
cv.THRESH_三角形,
cv.THRESH_TRUNC]
对于范围内的i(len(titles)):
retval,thresh=cv.threshold(img,127255,threshold\u选项[i])
plt.子地块(2,3,i+1),plt.title(titles[i]),plt.imshow(thresh,'gray')
plt.show()

请提供您的数据背景。什么是数据,数据源,你想做什么?