openCV中的函数calcHist在mac上的python中崩溃

时间:2014-11-07 17:35:18

标签: python opencv

这是代码

# USAGE
# python grayscale_histogram.py --image ../images/beach.png

# Import the necessary packages
from matplotlib import pyplot as plt
import argparse
import cv2

# Construct the argument parser and parse the arguments
ap = argparse.ArgumentParser()
ap.add_argument("-i", "--image", required = True,
    help = "Path to the image")
args = vars(ap.parse_args())

# Load the image, convert it to grayscale, and show it
image = cv2.imread(args["image"])
image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
cv2.imshow("Original", image)

# Construct a grayscale histogram
hist = cv2.calcHist([image], [0], None, [256], [0, 256])

# Plot the histogram
plt.figure()
plt.title("Grayscale Histogram")
plt.xlabel("Bins")
plt.ylabel("# of Pixels")
plt.plot(hist)
plt.xlim([0, 256])
plt.show()
cv2.waitKey(0)

当我运行它时,我有以下错误:

Snows-MacBook-Pro:code Mac$ python chapter-07/grayscale_histogram.py -i images/wave.png 
OpenCV Error: Assertion failed (step[dims-1] == (size_t)CV_ELEM_SIZE(flags)) in create, file /tmp/opencv-miY1tR/opencv-2.4.9/modules/core/src/matrix.cpp, line 236
Traceback (most recent call last):
  File "chapter-07/grayscale_histogram.py", line 21, in <module>
    hist = cv2.calcHist([image], [0], None, [256], [0, 256])
cv2.error: /tmp/opencv-miY1tR/opencv-2.4.9/modules/core/src/matrix.cpp:236: error: (-215) step[dims-1] == (size_t)CV_ELEM_SIZE(flags) in function create

我已经用

安装了openCV
brew install opencv

我再次重新安装openCV,但同样存在问题。

我怀疑编译openCV时遇到了一些问题 也许是因为不同的编译器clang,gcc。

任何建议都表示赞赏。

2 个答案:

答案 0 :(得分:1)

在openCV中使用另一个函数时出现了同样的错误。我也使用你帖子中的代码得到了错误。 openCV 3.0.0也没有用,它给了我另一种错误。

最终工作的是通过Anaconda安装openCV。它仍然使用openCV 2.4.8,所以这可能是解决方案。

首先,我将brew中的openCV取消链接:“brew unlink opencv”

然后安装了Anaconda软件包:http://continuum.io/downloads#all

然后安装openCV:“conda install opencv”

最后,更新numpy:“conda update numpy”

答案 1 :(得分:0)

我还需要执行pip uninstall numpy但还必须删除/usr/local/bin/usr/local/Cellar中的numpy目录(特别是f2py目录)。 之后我做了一个pip install numpy,它运作正常。