安卓图像处理(四)使用javacameraview实时显示相机图像 并且 去除Javacameraview四周的黑框
文章目录Javacameraview和surfaceview区别利用javacameraview显示图像效果以及缺点去除黑边源码地址:https://github.com/SFUMECJF/imagedetect看不懂可以在下面加我微信交流。Javacameraview和surfaceview区别总而言之,Javacameraview是经过优化后的显示类,在适用性上要更好。缺点只有帧率会低一些。所
源码地址:https://github.com/SFUMECJF/imagedetect
看不懂可以在下面加我微信交流。
Javacameraview和surfaceview区别
总而言之,Javacameraview是经过优化后的显示类,在适用性上要更好。缺点只有帧率会低一些。所以,在配置好Open CV后,还是要选择javacameraview。
利用javacameraview显示图像
这个内容很简单,教程也很多,最重要的是在oncameraframe这个函数里面,对相机的帧最处理。
效果以及缺点
真正使用javacameraview后,会发现四周有不少黑边。我将oncameraframe里的帧resize之后,会直接报错。实在搞不定。
去除黑边
去除黑边的思路,将javacameraview缩小到1dp,然后用一个大的imageview覆盖这个javacameraview,然后,在javacameraview里,将原本要返回给javacameraview的图像,先resize到我需要的大小,铺满左右屏幕,再同时返回给imageview,可实现去除黑边功能。注意,这里因为imageview是主活动里的ui,不可以直接设置,要借助于runOnUiThread.
在oncameraview中添加如下代码,即可。
runOnUiThread(new Runnable() {
@Override
public void run() {
bmap = Bitmap.createBitmap(iv3.getWidth(), iv3.getHeight(), Bitmap.Config.ARGB_8888);
resize(mRGBAT, topMat, new Size(iv3.getWidth(), iv3.getHeight()));
Utils.matToBitmap(topMat, bmap);
iv1.setImageBitmap(bitmap);
iv3.setImageBitmap(bmap);
}
});
更多推荐










所有评论(0)