【问题标题】:python opencv error in Emacs when running cv2.Canny()运行 cv2.Canny() 时 Emacs 中的 python opencv 错误
【发布时间】:2017-02-22 22:32:30
【问题描述】:

我在 Emacs 的 python shell 中使用 OpenCV 的 cv2.Canny() 函数时遇到了一个非常奇怪的问题。当我运行cv2.Canny(img, thresh1, thresh2) 时,我收到错误消息

OpenCV 错误:cv::Canny 中的断言失败(深度 == CV_8U),文件 D:\Build\OpenCV\opencv-3.2.0\modules\imgproc\src\canny.cpp,第 845 行 Traceback(最近一次调用最后一次):文件“”,第 1 行,在 文件“../myscript.py”, 第 34 行,在 线 = cv2.HoughLines(edges,1,np.pi/180,200) cv2.error: D:\Build\OpenCV\opencv-3.2.0\modules\imgproc\src\canny.cpp:845: 错误: (-215) 函数 cv::Canny 中的深度 == CV_8U

我的电脑上什至没有 D 盘,为什么源代码有这个问题?它应该已经编译了..

我没有观察到 python-opencv 中的任何其他函数导致此问题。我也尝试安装不同的版本,这个特定的函数调用也出现同样的错误,但是由于canny.cpp文件的版本不同,所以行号会有所不同。

但是,当我在 System Python Shell 中运行同一行时,一切都很好......

我的系统环境:

windows7 64bit
python 3.5
python-opencv: 3.1, or 3.2
emacs 25.1.1

【问题讨论】:

  • 您的img 需要转换为uint8. CV_8U。导入 numpy 并在加载图像 img= np.uint8(img) 后添加以下行。之后使用cv2.Canny。
  • 但是为什么我使用系统python shell时没有错误?

标签: python opencv emacs


【解决方案1】:

问题是您的图像(或您的一张图像)不是 8 位格式(8 位格式意味着三个通道中的每一个都在 [0,255])。

您可以通过添加以下内容进行更改:

img = img.astype(np.uint8)

在您致电cv2.Canny之前。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-20
    • 1970-01-01
    相关资源
    最近更新 更多