作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正着手开发一个应用程序来监视相机预览,对其进行一些图像处理并在 Canvas 上显示 int。就像诊断一样,我有以下代码:
camera = Camera.open();
ImageFormat imf = new ImageFormat();
Camera.Parameters param = camera.getParameters();
param.setPreviewSize(128, 128);
preview_format = param.getPreviewFormat();
Camera.Size sz = param.getPreviewSize();
myimage = new int[sz.width*sz.height];
在运行时它报告 preview_format 是 17,据我所知是“NV21”。
后来我有:
camera.setPreviewCallback(new PreviewCallback()
{
public void onPreviewFrame(byte[] _data, Camera _camera)
{
YUV_NV21_TO_RGB(myimage , _data, 128, 128) ;
}
});
函数 YUV_NV21_TO_RGB 取自 here .
同时在另一个线程中我有:
canvas.drawBitmap(
myimage, // the int array
0, // where to start in the array
128, // the stride ???
200, // x coord of where to display
200, // y coord of where to display
128, // wid
128, // ht
false, // alpha used?
null); // the paint used
生成的图像可以在下面的方 block 中的其他诊断中看到。当我四处移动手机时,条纹会发生变化,并且在某种程度上似乎与相机所指向的方向相对应,但显然它已经被破坏了。我尝试使用找到的替代函数 here , 和维基百科的另一个,但结果看似相同。有什么想法吗?
编辑:我的一个想法是 NV21 可能没有完全指定格式 - 也许它是一类格式,您需要继续指定每像素位数或类似格式。
编辑: 一条额外的线索 - 如果我完全遮住相机,正方形就会变成纯绿色。
最佳答案
您的预览尺寸不是 128 x 128,因为您设置失败。您在 Camera.Parameters
实例上设置了它,但没有将它应用到相机。
您需要添加以下行:
camera.setParameters(param);
而且直接从 Camera
实例获取参数可能是安全的:
preview_format = camera.getPreviewFormat();
Camera.Size sz = camera.getPreviewSize();
关于android - YUV_NV21_TO_RGB 不工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21391700/
我是一名优秀的程序员,十分优秀!