我有一个YUV420_SP_NV21图像,它以字节数组的形式表示(没有头部),从Android预览帧中获取,并且我需要将其解码为RGB图像。 我以前在Android应用程序中使用Java和OpenCV4Android做过这件事:
convert_mYuv = new Mat(height + height / 2, width, CvType.CV_8UC1);
convert_mYuv.put( 0, 0, data );
Imgproc.cvtColor( convert_mYuv, convert_mRgba, type, channels );
我尝试用Python做同样的事情:
nmp = np.array(byteArray, dtype=np.ubyte)
RGBMatrix = cv2.cvtColor(nmp,cv2.COLOR_YUV420P2RGB)
但是RGBMatrix仍然是None
。
我知道可以自己完成这个操作,熟悉公式,但很想用OpenCV的方式来实现。如何实现?
我还尝试了cv2.imdecode()
,但它也失败了,可能是我误用了它。
with open(yuv_path, 'rb') as w: mat = YUVtoRGB(np.frombuffer(w.read(), dtype=np.uint8))
- Wojciech Walczak