def adaptive_gaussian_thresholding(self, filename):
im = cv2.imread(filename, 0)
filtered_image = cv2.adaptiveThreshold(im, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, 3, cv2.THRESH_BINARY, 3, 0)
cv2.imwrite(filename, filtered_image)
filtered_image = cv2.adaptiveThreshold(im, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, 3, cv2.THRESH_BINARY, 3, 0) error: /root/opencv/modules/imgproc/src/thresh.cpp:1287: error: (-215) blockSize % 2 == 1 && blockSize > 1 in function adaptiveThreshold
block 大小或图 block 大小是要用于传递给过程的内核的像素数^2。它必须是奇数。我不确定这是错误还是其他问题?
最佳答案
您正在调用带有额外参数的 adaptiveThreshold
。您在 adaptiveMethod
和 thresholdType
参数之间错误地放置了一个 3
。在您的调用中,cv2.THRESH_BINARY
标志位于 blockSize
值预期的位置。顺便说一下,cv2.THRESH_BINARY
的计算结果为零,因此会出现您看到的错误。调用函数的正确方法是:
filtered_image = cv2.adaptiveThreshold(im, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, 3, 0)
关于python - Opencv python 不正确的 block 大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37978271/