我运行了下面的代码,我收到一个错误
我不清楚这意味着什么以及如何解决它
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()
最佳答案
您将能够通过以下方式解决您的错误。
首先检查您的输入图像是否只有单 channel 。您可以通过运行 print img.shape
来检查它。如果结果像 (height, width, 3)
,则图像不是单 channel 。您可以通过以下方式将图像转换为单个 channel :
img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
然后检查图像类型是否不是 float 的。您可以通过运行
print img.dtype
来检查它。如果结果与 float
相关,您还需要通过以下方式更改它:img = img.astype('uint8')
还有最后一件事,在这种情况下,它实际上并不是一个错误。但是,如果您继续练习这种组合多个标志的方法,将来可能会出错。当您使用多个标志时,请记住不要将 then 与 加号 结合,而是与 | 结合使用。签署 。
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()
关于python - 得到一个错误 OpenCV(3.4.1) C:\projects\opencv-python\opencv\modules\imgproc\src\thresh. cpp:1406: error: (-215),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50631195/