【问题标题】:How to read image from database(sqlite Django) not local file?如何从数据库(sqlite Django)而不是本地文件中读取图像?
【发布时间】:2019-04-07 01:45:05
【问题描述】:
  • OpenCV => 3.4,操作系统/平台 => Ubuntu18.4,编译器 => Pycharm2018,Django => 2.1.2

我正在尝试从数据库中获取图像并对图像进行编码以进行人脸识别。

型号

from django.db import models

class Image(models.Model):
    name = models.CharField(max_length=500)
    imagefile = models.FileField(upload_to='images/', null=True, verbose_name="")

    def __str__(self):
        return self.name + ": " + str(self.imagefile)

读取图片

from .models import Image
import cv2

lastimage = Image.objects.last()
imagefile = lastimage.imagefile
image = cv2.imread(imagefile)
cv2.imshow('image',image)

错误 得到这个错误

异常类型:TypeError

异常值:内置操作的参数类型错误

【问题讨论】:

  • 如果你想从内存缓冲区而不是文件解码,你正在寻找cv2.imdecode
  • FileField 存储文件的路径,相对于您的 MEDIA_ROOT。在我看来,如果您希望能够读取文件,您将希望获得完整路径。
  • 图片不存入数据库,只保存表示图片路径的字符串。

标签: python django sqlite opencv django-models


【解决方案1】:

这是我创建AI web项目时的方法:

np.ndarray buff base64

【讨论】:

  • 我解决了这个问题。谢谢` image = np.asarray(bytearray(imagefile.read()), dtype="uint8") image_encode = cv2.imdecode(image, cv2.IMREAD_COLOR) `
猜你喜欢
  • 2017-07-23
  • 2021-03-28
  • 2012-10-17
  • 2011-09-04
  • 2011-09-19
  • 1970-01-01
  • 2011-04-26
  • 1970-01-01
相关资源
最近更新 更多