问题描述:200dk采用板载摄像头输入时,采集到的图片数据格式为YUV格式,这种格式没法使用opencv进行数据预处理。
这里提供一个可行的办法将摄像头采集到的YUV格式转为opencv可处理的方式,方便某些小伙伴需要使用到opencv处理图片。
1.从摄像头采取到YUV格式,即cap.read()采集到的数据存储到image。该image存储着YUV数据。
2.首先将YUV数据转为numpy格式,使用下面代码将YUV转为一维向量。
image_np=image.nparray()
3.将一维向量变为具有图像shape的numpy。使用下面的代码将一维数据变为WxH的shape。
image_reshape = np.reshape(image_np, (-1,image.width)).astype(uint8)
尽量使用uint8,不然有可能会报错
4.变成了具有图片shape的numpy之后,就可以使用opencv进行YUV到RGB的色域变换。
im = cv.cvtColor(image_reshape , cv.COLOR_YUV420SP2RGB)
在这之后,转出来的im就是可以使用opencv来出来的数据,就可以使用opencv来进行愉快的处理了。