获取错误OpenCV(3.4.1)C:\ projects \ opencv-python \ opencv \ modules \ imgproc \ src \ thresh.cpp:1406:错误:( - 215)

时间:2018-05-31 19:07:01

标签: python opencv

我运行了以下代码,我收到错误

  

的OpenCV(3.4.1)   C:\项目\的OpenCV-蟒\的OpenCV \模块\ imgproc \ SRC \ thresh.cpp:1406:   错误:(-215)src.type()==(((0)&amp;((1 <&lt; 3)-1))+(((1)-1)&lt;&lt;&lt; 3))   在函数cv :: threshold

我不清楚这意味着什么以及如何解决它

import numpy as numpy
from matplotlib import pyplot as matplot
import pandas as pandas
import math
from sklearn import preprocessing
from sklearn import svm
import cv2

blur = cv2.GaussianBlur(img,(5,5),0)
ret3,th3 = cv2.threshold(blur,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU)
image = numpy.invert(th3)
matplot.imshow(image,'gray')
matplot.show()

1 个答案:

答案 0 :(得分:4)

您可以通过以下方式解决错误。

首先检查输入图像是否只有单个通道。您可以运行print img.shape进行检查。如果结果类似(height, width, 3),则图像不是单个通道。您可以通过以下方式将图像转换为单个通道:

img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

然后检查图像类型是否不浮动。您可以运行print img.dtype进行检查。如果结果与float相关,您还需要通过以下方式进行更改:

img = img.astype('uint8')

最后一件事,在这种情况下实际上并不是错误。但是如果你继续练习这种组合多个标志的方法,将来可能会出错。当您使用多个标志时,请记住然后将加号组合,但使用 |登录

 ret3,th3 = cv2.threshold(blur,0,255,cv2.THRESH_BINARY | cv2.THRESH_OTSU)

最后,您可以使用opencv函数来显示图像。无需依赖其他库。

最终代码如下:

img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
img = img.astype('uint8')
blur = cv2.GaussianBlur(img,(5,5),0)
ret3,th3 = cv2.threshold(blur,0,255,cv2.THRESH_BINARY | cv2.THRESH_OTSU)
image = numpy.invert(th3)
cv2.show('image_out', image)
cv2.waitKey(0)
cv2.destroyAllWindows()