在Django views.py中使用cv2.imread()读取图像时出错

时间:2016-11-09 21:49:06

标签: python django numpy

我正在尝试对我在Django的cv2.imread()文件中通过views.py加载的图像应用图像处理,但我每次都得到一个AttributeError

以下是层次结构

Heirarchy


views.py 我正在尝试阅读 temp321.jpg

def process_image(request):
    url = "static/images/temp321.jpg"
    a = cv2.imread(url)
    r, c = a.shape
我得到了


错误

Error message snapshot

我做错了什么?

1 个答案:

答案 0 :(得分:1)

此错误表示a为无。 a是调用cv2.imread

的结果
  

如果图像无法读取(因为文件丢失,不正确   权限,不支持或无效格式),该函数返回一个   空矩阵

这是来自cv2 c文档。这在python中转换为None。所以问题主要在于你的文件没有被阅读。

解决方案: 如果您已在settings.py文件中正确设置PROJECT_ROOT变量

os.path.join(PROJECT_ROOT, "static/images/temp321.jpg")

如果您没有设置PROJECT_ROOT,请添加到settings.py

PROJECT_ROOT = os.path.abspath(os.path.dirname(__file__))

请注意,如果您在生产中执行此操作,可能仍会遇到问题,因为可能不允许Web服务器从该目录中读取。在这种情况下,您需要更改文件系统权限