OpenCV(Open Source Computer Vision Library)是一个基于Apache2.0许可(开源)发行的跨平台计算机视觉和机器学习软件库,可以运行在Linux、Windows、Android和Mac OS操作系统上。它轻量级而且高效——由一系列C函数和少量C++类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。
OpenCV用C++语言编写,它具有C++,Python,Java和MATLAB接口,并支持Windows,Linux,Android和Mac OS,OpenCV主要倾向于实时视觉应用,并在可用时利用MMX和SSE指令。
OpenCV可用于开发实时的图像处理、计算机视觉以及模式识别程序,该程序库也可以使用英特尔公司的IPP进行加速处理。OpenCV的应用领域包括机器人视觉、模式识别、机器学习、工厂自动化生产线产品检测、医学影像、摄像机标定、遥感图像等。
现在,汽车的踪影无处不在,公路上疾驰,大街边临停,小区中停靠,车库里停泊。所以车牌识别成为了焦点,而车牌检测是车牌识别的基础和前提。
-
初始化OpenCV
//初始化OpenCV
boolean initState = OpenCVLoader.initLocal();
Log.d(TAG, "onCreate: OpenCV初始化" + initState)
-
初始化检测器CascadeClassifier和执行车牌检测
public Bitmap recognizePlateNumber(Bitmap bitmap) {
Mat imageMat = new Mat();
Utils.bitmapToMat(bitmap, imageMat);
CascadeClassifier classifier = new CascadeClassifier();
try {
InputStream is = getAssets().open("haarcascade_russian_plate_number.xml");
classifier.load(is);
RectVector plates = new RectVector();
classifier.detectMultiScale(imageMat, plates);
int numOfPlates = plates.size();
StringBuilder resultBuilder = new StringBuilder();
for (int i = 0; i < numOfPlates; ++i) {
Rect rect = plates.get(i).clone();
Imgproc.rectangle(imageMat, new Point(rect.tl()), new Point(rect.br()), new Scalar(0, 255, 0), 2);
}
Utils.matToBitmap(imageMat, bitmap);
return bitmap;
} catch (IOException e) {
e.printStackTrace();
} finally {
classifier.close();
}
return null;
}
目前只实现了图像中车牌区域检测,接下来文章我们再继续研究车牌文字识别。
原文始发于微信公众号(沐雨花飞蝶):Android使用OpenCV实现车牌检测
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/256032.html