【问题标题】:OpenCV error with AdaptiveThreshold带有 AdaptiveThreshold 的 OpenCV 错误
【发布时间】:2015-08-10 23:20:21
【问题描述】:

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

cv2.error: /tmp/opencv-UA2sOU/opencv-2.4.9/modules/imgproc/src/thresh.cpp:797: error: (-215) blockSize % 2 == 1 && blockSize > 1 in function adaptiveThreshold

我似乎无法理解导致此问题的原因。

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()

【问题讨论】:

    标签: python opencv


    【解决方案1】:

    cv2.adaptiveThreshold 需要一个奇数的blockSize。所以你需要使用 39 或 41 而不是 40。

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

    这由错误消息指示:它显示“blockSize % 2 == 1”,这意味着blockSize 不能被 2 整除。

    【讨论】:

    • 你知道为什么这是真的吗?谢谢!
    • 虽然可以实现具有均匀窗口大小的实现,但通常需要围绕像素的对称窗口。这仅适用于奇数窗口大小,例如具有恒定宽度边框的像素。否则,平均值会在一侧比另一侧涉及更多像素。
    猜你喜欢
    • 2015-07-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-03
    • 2015-06-17
    • 1970-01-01
    • 2013-02-18
    • 1970-01-01
    相关资源
    最近更新 更多