大佬教程收集整理的这篇文章主要介绍了我无法从字节读取带有 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'>
cv2.imdecode()
期望解码 JPEG 编码或 PNG 编码的图像。这样的图像开头:
ff d8 ff
或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,请注明来意。