Python 带有自适应阈值的OpenCV错误

Python 带有自适应阈值的OpenCV错误,python,opencv,Python,Opencv,我试图通过openCV捕捉视频,然后对视频应用自适应阈值(转换为黑白)。问题是这段代码经常抛出错误。我正在使用自适应阈值函数中的最后两个数字 cv2.error:/tmp/opencv-UA2sOU/opencv-2.4.9/modules/imgproc/src/thresh.cpp:797:error:(-215)函数自适应阈值中的blockSize%2==1&&blockSize>1 我似乎不明白是什么导致了这个问题 import numpy as np import cv2 import

我试图通过openCV捕捉视频,然后对视频应用自适应阈值(转换为黑白)。问题是这段代码经常抛出错误。我正在使用自适应阈值函数中的最后两个数字

cv2.error:/tmp/opencv-UA2sOU/opencv-2.4.9/modules/imgproc/src/thresh.cpp:797:error:(-215)函数自适应阈值中的blockSize%2==1&&blockSize>1

我似乎不明白是什么导致了这个问题

import numpy as np
import cv2
import pylab as pl

cap = cv2.VideoCapture(0)


# take first frame of the video
ret,frame = cap.read()

while(True):
    # Capture frame-by-frame
    ret, frame = cap.read() 
    thresh = cv2.adaptiveThreshold(gray,255,cv2.ADAPTIVE_THRESH_MEAN_C,cv2.THRESH_BINARY,40,15)

    cv2.imshow('frame',thresh)

    if cv2.waitKey(1) & 0xFF == ord('q'):
        #cv2.imwrite("snap.jpg", thresh)
        break

# When everything done, release the capture
cap.release()
cv2.destroyAllWindows()
需要奇数
块大小
。所以你需要用39或41而不是40

blockSize–用于计算像素阈值的像素邻域大小:3、5、7等


错误消息表明了这一点:它显示“
blockSize%2==1
”,这意味着
blockSize
不能被2整除。

您知道为什么这是真的吗?非常感谢。虽然可能实现均匀的窗口大小,但通常需要围绕像素的对称窗口。这仅适用于奇数窗口大小,例如具有恒定宽度边界的像素。否则,平均值将在一侧包含比另一侧更多的像素。