java识别图片中的图形形状_基于Java+OpenCV技术对几何图像颜色与形状识别

基于 Java+OpenCV 技术对几何图像颜色与形状识别 杨思阳 黄军 吴春秋 (黔东南民族职业技术学院,贵州 凯里 556000) [摘 要] 通过 Java 调用 OpenCV 视觉库实现几何图像颜色、形状识别。 将图像转化为 HSV 颜色空间,按各颜色 H、S、V 的取值范围分割图像,对分割图像进行滤波处理、灰度处理、二值化、轮廓提取、去除干扰轮廓、轮廓形状拟合、获取轮廓凸点个数、用凸点距离判断形状,从而实现对各种颜色的三角形、圆、矩形、正方形、多边形等几何图像颜色、形状的识别。 该方法可应用于现实生活中,例如识别交通信号灯和信号转向灯等有颜色和形状识别的领域。 [关键词] OpenCV;颜色分离;形状拟合 中图分类号:TP391.41 文献标识码:A 文章编号:1008-6609(2019)01-0079-04 1 引言 随着社会科学技术的发展进步,特别是近几年计算机软硬件技术的高速发展和计算机视觉的广泛应用,对图像处理的要求越来越高。通过翻阅大量文献发现对彩色几何图像的识别,要么用 C、C++ 语言,要么用 Python、matlab 实现,而采用 Java 编程实现的较少。同时,在 Java 实现几何图像识别算法中,大多采用 R、G、B 三原基础色进行图像识别,而用 HSV 颜色空间进行颜色识别的较少,且对颜色、形状识别率也不是很高。 本文提出用 Java 编程调用 OpenCV 视觉库实现对 7 种常见颜色几何图像的识别。首先将图像从 BGR 转化为 HSV 颜色空间图像,并用 OpenCV 中算法对图像颜色分离,然后分别对各种颜色图像进行轮廓提取、形状拟合,从而实现对几何图像形状和颜色的识别,该方法可借鉴用于现实生活中有颜色和形状识别的领域。 2 导入 OpenCV 的 Java 包 在 OpenCV 官网下载 OpenCV3.0.0,解压后,在已建项目的 Eclipse 开发环境里将 OpenCV 解压文件里的 build\Java 文件,根据电脑系统选择相对应的 OpenCV-300 库导入现有项目,即可在项目中正常调用 OpenCV-Java 库。本文电脑系统为 32 位系统,选择 OpenCV-x86 包导入。 3 颜色图像分割 3.1 缩小图像因在后面需要处理图像像素值,为了提高处理速度,将图 像缩小。用 OpenCV-Java 库里的函数 Imgproc.resize(src,dst, dsize)缩小图片,src 为原图,dst 为输出图像。 3.2 转化为 HSV 颜色空间 OpenCV 默认处理的图片是 BGR 颜色空间,而现多为RGB 型图像。首先将 RGB 转为 BGR,再将 BGR 转为 HSV。因为 BGR、RGB 都是红、绿、蓝三原色组合成的颜色图形,如果需对三原色外的其他颜色识别,用 R、G、B 值实现难度较大,识别率不高。 而用 HSV 中的 H、S、V 值识别图像颜色较为容易,且各颜色的 H、S、V 取值范围也比较容易划分。在 HSV 颜色空间中,各颜色三个分量 H、S、V 取值范围如图 1。 用函数 Imgproc.cvtColor (imageResized, HSVImg, Imgproc.COLOR_RGB2BGR)将 RGB 转为 BGR。用函数 Imgproc.cvtColor(imageResized, HSVImg, Imgproc.COL-OR_BGR2HSV)将 BGR 转为 HSV。imageResized 为输入图像, HSVImg 为输出图像。 3.3 获取图像像素点

你可能感兴趣的:(java识别图片中的图形形状)