【问题标题】:How to decode jpg image from memory?如何从内存中解码jpg图像?
【发布时间】:2017-11-03 15:07:02
【问题描述】:

我可以通过 PIL、Python OpenCV 等将磁盘中的 jpg 图像通过一些内置函数(例如(在 OpenCV 的情况下)arr= cv2.imread(filename))读取到 numpy 数组中。

但是如何直接从内存中解码二进制格式的 jpg?

用例:我想将一个jpg图像以二进制格式放入数据库中,然后将其从数据库中读取到内存中,并将其解码为一个numpy数组。

这可能吗?

【问题讨论】:

    标签: python opencv numpy binary jpeg


    【解决方案1】:

    假设您将图像数据作为string 存储在您的数据库中,您首先需要从该字符串构造一个numpy 数组,该数组稍后可以使用cv2.imdecode 转换为图像。例如:

    img = cv2.imdecode(np.fromstring(img_data, dtype=np.uint8), cv2.IMREAD_UNCHANGED)
    

    【讨论】:

      【解决方案2】:

      从 Url 获取图像到 Jpg

          import requests
          from io import BytesIO
      
          response = requests.get("https://optse.ztat.net/teaser/ES/CW15_ES_bermuda_men.jpg")
          my_img_In_byts = BytesIO(response.content).read()
      
      
          path="C:/Users/XX/Desktop/TryingPython/downloadedPic.jpg"
      
          my_fprinter = open(path, mode='wb')
          print( my_fprinter .write(my_img_In_byts))
          my_fprinter.close()
          print("Done")
      

      【讨论】:

        【解决方案3】:

        对于python3使用这种方式

        from scipy import misc
        f= open('file.png', 'rb')
        fs = f.read()
        likefile = io.BytesIO(fs)
        face1 = misc.imread(likefile)
        

        python2 有 StringIO

        【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-05-01
        • 1970-01-01
        • 1970-01-01
        • 2011-02-11
        • 1970-01-01
        • 2011-07-24
        • 2014-04-08
        • 2013-07-22
        相关资源
        最近更新 更多