安卓图像处理(四)使用javacameraview实时显示相机图像 并且 去除Javacameraview四周的黑框

阅读 37

2022-07-18


文章目录

  • ​​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)

0 0 举报