【问题标题】:Crop a YUV image裁剪 YUV 图像
【发布时间】:2014-12-02 15:06:15
【问题描述】:
我有相机预览回调。在 onPreviewFrame 上,我将获得 YUV 数据。默认情况下,我的图像格式是 NV21。如果我没记错 data[] 是 YUV 格式。
- 让我预览 640*480。如何裁剪此 YUV 以获得包含 480*480 YUV 图像的 byte[]。
- 如何旋转 YUV 图像。
- 如果这很难存档,我该如何裁剪 IplImage。我正在使用 Javacv 对视频进行编码。不幸的是它是绿色的。
- 还有其他方法可以存档吗?
提前致谢
阿姆兰。
【问题讨论】:
标签:
android
image
image-processing
android-camera
javacv
【解决方案1】:
假设您在裁剪时想要一列最左边的 480 像素,您可以遍历图像高度(480 行)并复制 Y 平面的前 480 像素。对于 UV 平面,只需从原始 UV 平面复制前 480 个像素(这将包含 240 U 和 240 V 值),循环超过图像高度的一半(240 行)。
-
为给定的旋转角度生成一个旋转变换矩阵。它会像
[cos(theta) -sin(theta)
sin(theta) cos(theta)]
查看wiki 了解更多信息。取它的逆矩阵,对于 结果旋转 空图像的每一对 (x, y),应用该变换以在原始图像中获得相应的 (x, y) 坐标。使用最近邻或双线性插值来获得最终的像素值。