网站首页 > 易语言相关 > 图形图像源码 正文
源码名称:图片相似图识别
主要功能:支持识别,经过角度旋转,经过干扰,经过扭曲,完全不相同但近似的图。
论坛的很多图片相似度识别源码,大体都只能对比图片高度一致的图片才有效,对于经过了旋转角度,颜色干扰,或者根本就不是一张图,但是是一种类型的图。都起不了作用,所以自己研究搞了这个源码
功能原理:
思路源自三原色也就是RGB。
众所周知 RGB色彩模式是工业界的一种颜色标准,是通过对红(R)、绿(G)、蓝(B)三个颜色通道的变化以及它们相互之间的叠加来得到各式各样的颜色的,RGB即是代表红、绿、蓝三个通道的颜色,这个标准几乎包括了人类视力所能感知的所有颜色。
三原色,每个原色可以生成256种颜色。三通道加一起刚好就是256*3种颜色。每张图片相同的图片。所使用的颜色数量基本上近似一致。而不相同的图片,颜色使用量可以说是差距很大。
由此想到,记录红、绿、蓝三个通道的各自256中颜色的量。进行两张图片对比。设置一个容差值 假设为-100 和 + 100
为什么设置容差值呢,因为相同的一种图片 肉眼看着一致,很多时候,颜色值还是有点差距的。但是这个差距一定是在一个范围内。因为如果范围太大的话。肉眼都能看出来颜色不一样了。所以更别说软件了。
设置容差值之后 累计 256*3 个颜色的颜色用量。进行对比。再受容差值的影响。最终计算的结果。进行一个百分比计算。就可以得出图片的相似度。
经过实际测试,一般情况下 百分之55以上的相似度,基本上可以判定位同一种类图。因为如果不是一个种类的。相似度基本上是30以下 因为颜色的用量是天壤之别。
实现代码:
.版本 2 .支持库 eImgConverter .支持库 spec .支持库 BmpOperate .程序集 程序集1 .子程序 _启动子程序, 整数型, , 本子程序在程序启动后最先执行 .局部变量 局_计次, 整数型 .局部变量 局_相似度, 整数型 转换到BMP (取运行目录 () + “img\1.jpg”, 取运行目录 () + “1.bmp”) ' 原始图 .计次循环首 (40, 局_计次) 转换到BMP (取运行目录 () + “img\” + 到文本 (局_计次) + “.jpg”, 取运行目录 () + “2.bmp”) ' 对比图 局_相似度 = 相似图对比 (读入文件 (取运行目录 () + “1.bmp”), 读入文件 (取运行目录 () + “2.bmp”)) 调试输出 (“对比相似度:” + 到文本 (局_相似度) + “%”) .计次循环尾 () 返回 (0) ' 可以根据您的需要返回任意数值 .子程序 相似图对比, 整数型 .参数 原图数据, 字节集 .参数 对比图数据, 字节集 .局部变量 原图, 位图 .局部变量 对比图, 位图 .局部变量 局_计次, 整数型 .局部变量 局_计次2, 整数型 .局部变量 RGB, 字节集 .局部变量 红, 整数型, , "257" .局部变量 绿, 整数型, , "257" .局部变量 蓝, 整数型, , "257" .局部变量 红2, 整数型, , "257" .局部变量 绿2, 整数型, , "257" .局部变量 蓝2, 整数型, , "257" .局部变量 红色相似度, 整数型 .局部变量 绿色相似度, 整数型 .局部变量 蓝色相似度, 整数型 .局部变量 局_相似度总和, 整数型 .局部变量 局_相似度, 双精度小数型 原图.载入数据 (原图数据) .计次循环首 (原图.取宽度 (), 局_计次) .计次循环首 (原图.取高度 (), 局_计次2) RGB = 到字节集 (原图.取某点颜色 (局_计次 - 1, 局_计次2 - 1)) 红 [到整数 (RGB [1]) + 1] = 红 [到整数 (RGB [1]) + 1] + 1 绿 [到整数 (RGB [2]) + 1] = 绿 [到整数 (RGB [2]) + 1] + 1 蓝 [到整数 (RGB [3]) + 1] = 蓝 [到整数 (RGB [3]) + 1] + 1 .计次循环尾 () .计次循环尾 () 局_计次 = 0 局_计次2 = 0 对比图.载入数据 (对比图数据) .计次循环首 (对比图.取宽度 (), 局_计次) .计次循环首 (对比图.取高度 (), 局_计次2) RGB = 到字节集 (对比图.取某点颜色 (局_计次 - 1, 局_计次2 - 1)) 红2 [到整数 (RGB [1]) + 1] = 红2 [到整数 (RGB [1]) + 1] + 1 绿2 [到整数 (RGB [2]) + 1] = 绿2 [到整数 (RGB [2]) + 1] + 1 蓝2 [到整数 (RGB [3]) + 1] = 蓝2 [到整数 (RGB [3]) + 1] + 1 .计次循环尾 () .计次循环尾 () 局_计次 = 0 .计次循环首 (256, 局_计次) .如果真 (红 [局_计次] - 红2 [局_计次] ≥ -100 且 红 [局_计次] - 红2 [局_计次] ≤ 100) 红色相似度 = 红色相似度 + 1 .如果真结束 .如果真 (绿 [局_计次] - 绿2 [局_计次] ≥ -100 且 绿 [局_计次] - 绿2 [局_计次] ≤ 100) 绿色相似度 = 绿色相似度 + 1 .如果真结束 .如果真 (蓝 [局_计次] - 蓝2 [局_计次] ≥ -100 且 蓝 [局_计次] - 蓝2 [局_计次] ≤ 100) 蓝色相似度 = 蓝色相似度 + 1 .如果真结束 .计次循环尾 () 局_相似度总和 = 红色相似度 + 绿色相似度 + 蓝色相似度 局_相似度 = 局_相似度总和 ÷ (256 × 3) × 100 局_相似度 = 四舍五入 (局_相似度, 0) 返回 (局_相似度)
- 上一篇: 类_多线程许可证和类_多线程式时钟
- 下一篇: B站弹幕助手源码
猜你喜欢
- 2024-03-22 bmp;jpg;gif;tiff;png;5种格式互转小程序源码
- 2024-03-19 实现易语言曲线图控件的动态输出,纯源码
- 2024-03-16 用内存画板画折线统计图的例子
- 2024-03-13 等分切图 - PNG切图 - 内存中切割图片源码
- 2024-03-11 动画框简单实现屏幕溶解效果
- 2024-03-10 鼠标轨迹曲线模拟、可后台,贝塞尔曲线、Hermite曲线
- 2024-03-04 画svg图,可转存为字节集,支持多线程不崩溃的方法例子
- 2023-02-19 腾讯微信公众号里面的通用OCR文字识别接口对接源码
- 2023-02-15 易语言纯代码无调用线性动画效果
- 2023-02-09 图片太长滑动图片显示源码
你 发表评论:
欢迎- 百度站内搜索
- 关注微信公众号
- 网站分类
-
- 网站公告
- 电子书书籍
- 程序员工具箱
- 编程工具
- 易语言相关
- 网络相关源码
- 图形图像源码
- 系统工具源码
- 易语言模块源码
- 易语言支持库
- 数据库类源码
- 易语言例程
- 易语言游戏开发
- 易语言模块
- 多媒体类源码
- 易语言资源网
- 易语言视频教程
- JS分析教程
- 易语言图文教程
- 易语言常见问题及笔记
- 工具源码
- 易语言版本
- 网络编程
- javascript
- PHP编程
- html
- 正则表达式
- 面试题
- nodejs
- 其它综合
- 脚本专栏
- python
- 按键精灵相关
- 按键精灵图文教程
- 按键精灵视频教程
- 按键精灵Q语言
- 按键精灵安卓版
- golang
- 游戏安全
- 火山相关
- 火山安卓软件
- 火山常见问题及笔记
- 火山安卓源码
- 火山视频教程
- 火山PC版本下载
- 火山PC视窗例程
- 互联网那些事
- 引流推广
- 项目揭秘
- 网络营销
- 营销软件
- QQ营销软件
- 娱乐软件
- 机器人插件
- 培训教程
- 技术教程
- 活动线报
- 数据库
- Redis
- Access
- MongoDB
- Mysql
- 问答
- 其它
- 易语言
- 需求
- 在线教程
- 多线程培训班
- 觅风易语言教程
- 模拟系列教程
- 集中营易语言教程
- 历史数据
- 随机tag
已有2位网友发表了看法:
源码资源库 评论于 [2021-04-26 22:14:09] 回复
用旋转过的图片来做图片相似度对比
源码资源库 评论于 [2021-05-06 14:45:14] 回复
图像识别相似图片算法