opencv函数equalizeHist中的数据类型错误

时间:2019-06-04 11:31:05

标签: python opencv

给出cv2.readimg()读取的图像,如下所示:

cv2.imread(path)

,然后调用cv2.equalizeHist时发生以下错误:

Traceback (most recent call last):
    hist = cv2.equalizeHist(cv_image)
cv2.error: OpenCV(4.1.0) /Users/travis/build/skvark/opencv-python/opencv/modules/imgproc/src/histogram.cpp:3345: error: (-215:Assertion failed) _src.type() == CV_8UC1 in function 'equalizeHist'

我已阅读并应用了this问题和this一个问题的答案。这是first答案中应用的代码:

  import cv2
  removedNoise = cv2.medianBlur(img,3)
  removedNoise1 = np.uint8(removedNoise)
  hist = cv2.equalizeHist(cv_image)

这里是修改second答案的相同代码:

  from skimage import img_as_ubyte
  cv_image = img_as_ubyte(removedNoise)
  hist = cv2.equalizeHist(cv_image)

在两种情况下,都发生相同的原始错误。有关如何解决此问题的建议将不胜感激。我正在opencv 4.1.0上使用macos

3 个答案:

答案 0 :(得分:2)

所附的回溯状态表明:

  

(-215:断言失败)_src.type()==函数'equalizeHist'中的CV_8UC1

其中指出cv2. equalizeHist()的输入参数必须是单个通道图像。默认情况下,cv2.imread()返回3通道BGR图像,即使该图像本质上是灰度的。您可以尝试以下建议之一来解决此错误:

  1. cv2.imread("path/to/img.png", cv2.IMREAD_GRAYSCALE)

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

答案 1 :(得分:1)

Opencv中的

equalizeHist采用参数src,其中src应该是8位单通道图像。

在您的代码中,您正在将图像读取为3通道图像或BGR。您可以像这样以GrayScale读取图像,

img = cv2.imread(path, 0)

将此图像传递到equalizeHist如下所示,将提供所需的输出。

hist = cv2.equalizeHist(img)

您可以找到文档here以获得更多详细信息。

0中的imread是指示图像颜色类型的标志。您可以详细了解flags here

答案 2 :(得分:0)

为什么不使用Python Wand(基于Imagemagick)?这是仅几行代码的直方图均衡示例。

输入:

enter image description here

gsutil ls gs://tm_ufs


INFO 0604 14:17:49.749002 retry_util.py] Retrying request, attempt #1...
INFO 0604 14:18:51.684501 retry_util.py] Retrying request, attempt #2...
INFO 0604 14:19:54.875942 retry_util.py] Retrying request, attempt #3...
INFO 0604 14:21:03.459085 retry_util.py] Retrying request, attempt #4...
INFO 0604 14:22:22.220589 retry_util.py] Retrying request, attempt #5...
INFO 0604 14:23:48.716924 retry_util.py] Retrying request, attempt #6...
INFO 0604 14:25:20.733894 retry_util.py] Retrying request, attempt #7...
INFO 0604 14:26:52.750410 retry_util.py] Retrying request, attempt #8...
INFO 0604 14:28:24.763793 retry_util.py] Retrying request, attempt #9...


enter image description here