程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了我无法从字节读取带有 open-cv 的图像大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决我无法从字节读取带有 open-cv 的图像?

开发过程中遇到我无法从字节读取带有 open-cv 的图像的问题如何解决?下面主要结合日常开发的经验,给出你关于我无法从字节读取带有 open-cv 的图像的解决方法建议,希望对你解决我无法从字节读取带有 open-cv 的图像有所启发或帮助;

大家好,请帮帮我。

我有接收 multipart/form-data 作为图像的flask rest API,我想使用opencv 来处理它。

我的问题是我无法使用 cv2.imdecode 读取图像。

这个函数是 return none 所以有什么问题。

imgfile = request.files['image']
imgBuffer = imgfile.read() # <class 'bytes'>
#b'\xc3\xbf\xc3\x98\xc3\xbf\xc3\xa0\x00\x10'

img = np.frombuffer(imgBuffer,dtype='uint8') # <class 'numpy.ndarray'>
#[195 191 195 152 195 191 195 160   0  16]

img = cv2.imdecode(img,cv2.IMREAD_color) # <class 'nonetype'>

我无法从字节读取带有 open-cv 的图像

解决方法

cv2.imdecode() 期望解码 JPEG 编码或 PNG 编码的图像。这样的图像开头:

  • JPEG 签名 ff d8 ff
  • PNG 签名 89 50 4e 47 0d 0a 1a 0a

你的没有。所以它可能只是原始的、未编码的像素,你可能只需要:

img = np.array(imgBuffer).reshape((height,width))

另一个线索是 bytes 缓冲区的大小。如果它的大小与您的灰度图像的高度 x 宽度相匹配(或 3x,如果是彩色),则意味着您的图像只是像素数据,而您希望 JPEG/PNG 编码的图像要小得多,因为它是压缩的。

,

尝试对您的代码进行以下更改。

imgFile = request.files['image']
imgBuffer = imgFile.read() # <class 'bytes'>
#b'\xc3\xbf\xc3\x98\xc3\xbf\xc3\xa0\x00\x10'
my_img = cv2.imread(imgFile,0)
my_img.imshow(my_img)
#stream = io.StringIO(imgBuffer.decode("UTF8"),newline=NonE)

#img = np.frombuffer(stream,dtype='uint8') # <class 'numpy.ndarray'>
#[195 191 195 152 195 191 195 160   0  16]

#img = cv2.imdecode(img,cv2.IMREAD_COLOR) # <class 'NoneType'>

大佬总结

以上是大佬教程为你收集整理的我无法从字节读取带有 open-cv 的图像全部内容,希望文章能够帮你解决我无法从字节读取带有 open-cv 的图像所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。