热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

基于JavaOpenCV技术对几何图像颜色与形状识别杨思阳黄军吴春秋(黔东南民族职业技术学院,贵州凯里556000)[摘要]通过Java调

基于 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 获取图像像素点



推荐阅读
  • Week04面向对象设计与继承学习总结及作业要求
    本文总结了Week04面向对象设计与继承的重要知识点,包括对象、类、封装性、静态属性、静态方法、重载、继承和多态等。同时,还介绍了私有构造函数在类外部无法被调用、static不能访问非静态属性以及该类实例可以共享类里的static属性等内容。此外,还提到了作业要求,包括讲述一个在网上商城购物或在班级博客进行学习的故事,并使用Markdown的加粗标记和语句块标记标注关键名词和动词。最后,还提到了参考资料中关于UML类图如何绘制的范例。 ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • 本文介绍了在Python3中如何使用选择文件对话框的格式打开和保存图片的方法。通过使用tkinter库中的filedialog模块的asksaveasfilename和askopenfilename函数,可以方便地选择要打开或保存的图片文件,并进行相关操作。具体的代码示例和操作步骤也被提供。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • Java程序设计第4周学习总结及注释应用的开发笔记
    本文由编程笔记#小编为大家整理,主要介绍了201521123087《Java程序设计》第4周学习总结相关的知识,包括注释的应用和使用类的注释与方法的注释进行注释的方法,并在Eclipse中查看。摘要内容大约为150字,提供了一定的参考价值。 ... [详细]
  • 使用eclipse创建一个Java项目的步骤
    本文介绍了使用eclipse创建一个Java项目的步骤,包括启动eclipse、选择New Project命令、在对话框中输入项目名称等。同时还介绍了Java Settings对话框中的一些选项,以及如何修改Java程序的输出目录。 ... [详细]
  • 如何实现JDK版本的切换功能,解决开发环境冲突问题
    本文介绍了在开发过程中遇到JDK版本冲突的情况,以及如何通过修改环境变量实现JDK版本的切换功能,解决开发环境冲突的问题。通过合理的切换环境,可以更好地进行项目开发。同时,提醒读者注意不仅限于1.7和1.8版本的转换,还要适应不同项目和个人开发习惯的需求。 ... [详细]
  • 开发笔记:spring boot项目打成war包部署到服务器的步骤与注意事项
    本文介绍了将spring boot项目打成war包并部署到服务器的步骤与注意事项。通过本文的学习,读者可以了解到如何将spring boot项目打包成war包,并成功地部署到服务器上。 ... [详细]
  • 通过Anaconda安装tensorflow,并安装运行spyder编译器的完整教程
    本文提供了一个完整的教程,介绍了如何通过Anaconda安装tensorflow,并安装运行spyder编译器。文章详细介绍了安装Anaconda、创建tensorflow环境、安装GPU版本tensorflow、安装和运行Spyder编译器以及安装OpenCV等步骤。该教程适用于Windows 8操作系统,并提供了相关的网址供参考。通过本教程,读者可以轻松地安装和配置tensorflow环境,以及运行spyder编译器进行开发。 ... [详细]
  • 目录1、将mysql数据导出到SQL文件中(数据库存在的情况)2、将现有的sql文件数据导入到数据库中(前提数据库存在) 3、利用Navicat导出SQL文件和导入SQL文件1)从 ... [详细]
  • 2018年人工智能大数据的爆发,学Java还是Python?
    本文介绍了2018年人工智能大数据的爆发以及学习Java和Python的相关知识。在人工智能和大数据时代,Java和Python这两门编程语言都很优秀且火爆。选择学习哪门语言要根据个人兴趣爱好来决定。Python是一门拥有简洁语法的高级编程语言,容易上手。其特色之一是强制使用空白符作为语句缩进,使得新手可以快速上手。目前,Python在人工智能领域有着广泛的应用。如果对Java、Python或大数据感兴趣,欢迎加入qq群458345782。 ... [详细]
  • Mac OS 升级到11.2.2 Eclipse打不开了,报错Failed to create the Java Virtual Machine
    本文介绍了在Mac OS升级到11.2.2版本后,使用Eclipse打开时出现报错Failed to create the Java Virtual Machine的问题,并提供了解决方法。 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • Oracle优化新常态的五大禁止及其性能隐患
    本文介绍了Oracle优化新常态中的五大禁止措施,包括禁止外键、禁止视图、禁止触发器、禁止存储过程和禁止JOB,并分析了这些禁止措施可能带来的性能隐患。文章还讨论了这些禁止措施在C/S架构和B/S架构中的不同应用情况,并提出了解决方案。 ... [详细]
author-avatar
欢不是欢7
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有