OpenCV:具有意外结果的阈值操作

时间:2015-02-27 10:34:01

标签: python image python-2.7 opencv threshold

我使用OpenCV阅读白色图片:

enter image description here

我对此应用此阈值:

import cv2    
# Read image
src = cv2.imread("threshold.png", cv2.CV_LOAD_IMAGE_GRAYSCALE)    
# Set threshold and maxValue
thresh = 0
maxValue = 255    
# Basic threshold example
th, dst = cv2.threshold(src, thresh, maxValue, cv2.THRESH_BINARY);
# Find Contours  
contours, hierarchy=cv2.findContours(dst,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
# Draw Contour
cv2.drawContours(dst,countours,-1,(255,255,255),3)
cv2.imshow("Contour",dst)

因此,根据cv2.THRESH_BINRARY阈值类型,我逻辑上期望完全白色的图片。为什么?因为我设置了thresh=0maxValue=255,所以我期望的结果是逻辑,根据官方文档说明:

enter image description here

但是我得到一张完全黑色的图片(dst的像素设置为0,即使它们大于thresh图片中的src

为什么这样?我误解了什么?

1 个答案:

答案 0 :(得分:1)

来自documentation

  

findContours函数修改源图像。所以,如果你想要源   即使在找到轮廓后,也可以将图像存储到其他图像中   变量