cv2.adaptiveThreshold()返回空矩阵

时间:2017-06-28 20:41:45

标签: python python-3.x opencv

if int(playerNum) % 2 == 0:
    print("Even")
else:
    print("Odd")

函数自适应阈值在这里返回一个空矩阵,但传递的图像(img)不是空矩阵(我使用print语句检查)为什么会这样?

您可以在此处找到源代码: https://github.com/tanmay-edgelord/HandwrittenDigitRecognition/blob/master/performRecognition.ipynb

1 个答案:

答案 0 :(得分:1)

我在https://github.com/tanmay-edgelord/HandwrittenDigitRecognition/blob/master/Digit1.jpg的图片上运行了您的代码,它按预期工作。我做的唯一更改是使用cv2.imshow()显示图像。

import numpy as np
import cv2
    # Read image in grayscale mode
img = cv2.imread(r"path\to\img",0)

    # Median Blur and Gaussian Blur to remove Noise
img = cv2.medianBlur(img,3)
img = cv2.GaussianBlur(img, (5, 5), 0)
#print(img)

    # Adaptive Threshold for handling lightning
im_th = cv2.adaptiveThreshold(img,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,cv2.THRESH_BINARY_INV,11,5)
cv2.imshow("te", im_th)
if cv2.waitKey():
    cv2.destroyAllWindows()

结果如下:

enter image description here

为什么你确定这是一个空矩阵?如果您只是从[0 0 0 ..., 0 0 0]判断,这是一个非常大的数组。 Python只是将其显示为数组的简写版本。只需使用np.maximum(img_th)获取数组中的最大值,您就会看到最大值非零。