Python 2.7:Canny Edge detection TypeError(“图像数据无法转换为浮点数”)中的错误

Posted

技术标签:

【中文标题】Python 2.7:Canny Edge detection TypeError(“图像数据无法转换为浮点数”)中的错误【英文标题】:Python 2.7: error in Canny Edge detection TypeError("Image data can not convert to float") 【发布时间】:2017-08-24 06:05:11 【问题描述】:

我在 Python 2.7.12 中使用带有图像 (.jpg) 的 Canny 边缘检测算法

我使用了以下代码:

import cv2
import numpy as np
from matplotlib import pyplot as plt
img = cv2.imread('35.jpg')  
edges = cv2.Canny(img,150,200)
plt.subplot(121),plt.imshow(img,cmap = 'gray')
plt.title('Original Image'), plt.xticks([]), plt.yticks([])
plt.subplot(122),plt.imshow(edges,cmap = 'gray')
plt.title('Edge Image'), plt.xticks([]), plt.yticks([])
plt.show()

但它向我显示错误

Traceback (most recent call last):
  File "D:/python/test4.py", line 11, in <module>
    plt.subplot(121),plt.imshow(img,cmap = 'gray')
  File "C:\Python27\lib\site-packages\matplotlib\pyplot.py", line 3157, in imshow
    **kwargs)
  File "C:\Python27\lib\site-packages\matplotlib\__init__.py", line 1898, in inner
    return func(ax, *args, **kwargs)
  File "C:\Python27\lib\site-packages\matplotlib\axes\_axes.py", line 5124, in imshow
    im.set_data(X)
  File "C:\Python27\lib\site-packages\matplotlib\image.py", line 596, in set_data
    raise TypeError("Image data can not convert to float")
TypeError: Image data can not convert to float 

我看到了很多与此相关的答案,但我无法纠正它。我还观察到 如果我将相同的图像保存为 .png 则代码运行完美。我需要在代码中进行哪些修改才能运行 .jpg 文件? 谢谢。

【问题讨论】:

如果您的图像名称或扩展名错误,有时会发生这种情况。检查一下。 【参考方案1】:

我试过你的代码。 当我将不正确的图像路径传递给 cv2.imread 时,会出现您的问题。 否则,它工作正常。 所以首先尝试检查图像的路径。

【讨论】:

以上是关于Python 2.7:Canny Edge detection TypeError(“图像数据无法转换为浮点数”)中的错误的主要内容,如果未能解决你的问题,请参考以下文章

OpenCV之Canny边缘检测器

OpenCV之Canny边缘检测器

Linux Python 2.7 odbc连接到Progress Open Edge DB

如何从带有 python 2.7 和 Robot framework 2.9 的 Edge webdriver 开始

Canny,先Scharr得梯度再Canny,三通道黑色背景展示结果(OpenCV案例源码edge.cpp)

使用 Canny edge 创建蒙版 - 更新