代码之家  ›  专栏  ›  技术社区  ›  Binyamin Even

自适应阈值法在灰度图像中的应用

  •  0
  • Binyamin Even  · 技术社区  · 6 年前

    我读取图像,并使用以下函数将其转换为灰度:

    def rgb2gray(img):
        if len(img.shape)==3 & img.shape[-1] == 3:  # img is RGB
            return cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
        return img
    

    现在,我尝试使用以下方法将图像转换为二进制:

    def apply_threshold(img):
        if len(np.unique(img))==2: #img is already binary
            return img
        gray_img=rgb2gray(img)
        _,binary_img=cv2.threshold(gray_img,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU)
    return binary_img
    

    但我犯了个恼人的错误:

    cv2.error: OpenCV(3.4.1) C:\projects\opencv-python\opencv\modules\imgproc\src\thresh.cpp:1406: error: (-215) src.type() == (((0) & ((1 << 3) - 1)) + (((1)-1) << 3)) in function cv::threshold
    

    我不明白为什么 gray_img 肯定是灰色的! 我看了看 this 问题,最重要的答案是 salvador daly 建议输入的图片不是灰度的,但我检查了多次,肯定是。

    任何帮助都将不胜感激!

    0 回复  |  直到 6 年前
    推荐文章