Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在opencv中使用自适应阈值将阈值设置为零?_Python_Opencv - Fatal编程技术网

Python 如何在opencv中使用自适应阈值将阈值设置为零?

Python 如何在opencv中使用自适应阈值将阈值设置为零?,python,opencv,Python,Opencv,我正在尝试使用cv2.adaptiveThreshold(),但就我的目的而言,如果我可以将阈值设置为零而不是二进制,那将是理想的选择。我尝试使用标志cv2.THRESH\u to zero就像使用cv2.threshold()一样,但它抛出了一个错误。我怎样才能做到这一点,如果我不能用adaptiveThreshold()做到这一点,否则我怎么能做到?感谢您的帮助。从opencv,cv2。adaptiveThreshold只有两种阈值类型: 阈值类型必须是THRESH_BINARY或THRES

我正在尝试使用
cv2.adaptiveThreshold()
,但就我的目的而言,如果我可以将阈值设置为零而不是二进制,那将是理想的选择。我尝试使用标志
cv2.THRESH\u to zero
就像使用
cv2.threshold()
一样,但它抛出了一个错误。我怎样才能做到这一点,如果我不能用
adaptiveThreshold()
做到这一点,否则我怎么能做到?感谢您的帮助。

从opencv,
cv2。adaptiveThreshold
只有两种阈值类型:

阈值类型必须是THRESH_BINARY或THRESH_BINARY_INV

因此,对于自适应持股,如果需要类似的行为
cv2.THRESH_TOZERO
,则可以将原始图像和阈值化后的二值图像相乘。例如:

thresh_binary = cv2.adaptiveThreshold(img, 1, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, 11, 220)
thresh_tozero = cv2.multiply(img, thresh_binary)

我想出来了。谢谢你的帮助@Masoud! 我使用了以下代码:

    imgb = cv2.adaptiveThreshold(img, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, \ 
    cv2.THRESH_BINARY, 255, -9)
    img[np.where(imgb == 0)] = 0

我使用numpy查找二进制图像等于零的位置,并在这些位置将原始灰度图像设置为零

这对我不起作用。当我这样做时,它看起来像原始的二值图像,但有一些奇怪的灰色污点。@tr2002a。我编辑了代码。将
maxValue
更改为1。