_io.BufferedReader图片转化为numpy.ndarray格式
转化顺序为:_io.BufferedReader --> bytes --> 单通道numpy.ndarray --> 多通道numpy.ndarray
Python转化代码:
pic = open(path, mode='rb')
print('pic type:',type(pic))
data = pic.read()
print('data type:',type(data))
nparr = np.frombuffer(data, dtype=np.uint8)
print('nparr type:',type(nparr))
segment_data = cv2.imdecode(nparr, cv2.IMREAD_COLOR)
print('segment_data type:',type(segment_data))
输出为:
pic type: <class '_io.BufferedReader'>
data type: <class 'bytes'>
nparr type: <class 'numpy.ndarray'>
segment_data type: <class 'numpy.ndarray'>
其中cv2.imdecode()函数内:
cv2.IMREAD_COLOR : 加载一张彩色图片,忽视它的透明度。
cv2.IMREAD_GRAYSCALE : 加载一张灰度图。
cv2.IMREAD_UNCHANGED : 加载图像,包括它的Alpha通道。
由于我转化的为rgb彩色图,所以 cv2.imdecode() 函数中使用 cv2.IMREAD_COLOR 图像编码方式。若转化灰度图或rgba样式的图像,使用其余两种图像编码方式即可。