纯C++如何求两个矩阵的相似度?

oicqkill 2005-08-25 12:39:37
纯C++如何求两个矩阵的相似度?
也就是说如何传入两个2维数组,传出一个浮点数 == 也就是像个浮点数的相似度呢?
望大虾给个代码?
...全文
1000 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
oicqkill 2005-09-19
  • 打赏
  • 举报
回复
我的意思就是 说两个矩阵 的相似性,也就是 模糊数学 里提到的概念.
比如:
00110000
01001000
00110000
和下面的就相似
00011000
00100100
00011000

00011000
00100010
00001100
给人的感觉是 他在"结构" 上相似,这个在图形 识别的模式识别上有点 像,所以希望有人能用模糊数学的概念加代码给个demo.谢谢了

zhouhuahai 2005-08-25
  • 打赏
  • 举报
回复
两个矩阵的相似度?
相似度如何计算?搞不懂你的意思
lyclowlevel 2005-08-25
  • 打赏
  • 举报
回复
不明白你的意思。
snowbirdfly 2005-08-25
  • 打赏
  • 举报
回复
是啊~
你得给出相似度的计算标准~
要不然,相似度如何来度量啊??
#模板匹配 import cv2 as cv import numpy as np def template_demo(): dog = cv.imread("E:/opencv/picture/dog.jpg") dog_nose = cv.imread("E:/opencv/picture/nose.jpg") cv.imshow("dog",dog) result = cv.matchTemplate(dog,dog_nose,cv.TM_CCORR_NORMED) h,w =dog_nose.shape[:2] min_val,max_val,min_loc,max_loc=cv.minMaxLoc(result) pt1 = max_loc pt2 = (pt1[0]+w,pt1[1]+h) cv.rectangle(dog,pt1,pt2,(0,255,0),2) cv.imshow("match",dog) print(result) #src = cv.imread("E:/opencv/picture/dog.jpg") #cv.imshow("inital_window",src) template_demo() cv.waitKey(0) cv.destroyAllWindows() 分析: 模板匹配通常用于目标检测。本文我们检测狗图片的鼻子。 • 我们需要两个主要组件: 1. 源图像(I):我们期望找到与模板图像匹配的图像 2. 模板图像(T):将与模板图像进行比较的补丁图像 1. result = cv.matchTemplate(dog,dog_nose,cv.TM_CCORR_NORMED) void cv::matchTemplate( cv::InputArray image, // 待匹配图像W*H cv::InputArray templ, // 模板图像,和image类型相同, 大小 w*h cv::OutputArray result, // 匹配结果图像, 类型 32F, 大小 (W-w+1)*(H-h+1) int method // 用于比较的方法 ); 其中method有: TM_SQDIFF_NORMED匹配数值越低表示匹配效果越好 TM_CCORR_NORMED,TM_CCOEFF_NORMED匹配数值越大表示匹配效果越好 result参数:(保存各个点匹配结果的参数) 模板匹配函数cvMatchTemplate依次计算模板与待测图片的重叠区域的相似度,并将结果存入映射图像result当中,也就是说result图像中的每一个点的值代表了一次相似度比较结果 模板在待测图像上每次在横向或是纵向上移动一个像素,并作一次比较计算 我们可以通过cv.minMaxLoc函数来确定结果矩阵的最大值和最小值的位置。 2. cv.minMaxLoc(result) 返回result数值中最小值以及最小值所在的位置和最大值以及最大值所在的位置。 3. 当知道哪个点匹配度最高时这个时候我们需要用矩阵把模板给标出来 C++: void rectangle(Mat& img, Point pt1,Point pt2,const Scalar& color, int thickness=1, int lineType=8, int shift=0) 第一个参数:要在哪个图像上画? 第二个参数:矩阵的左上角点坐标 第三个参数:矩阵的右下角点坐标 第四个参数:颜色
【项目介绍】 基于Django协同过滤和spark-als的电影推荐系统源码+项目使用说明+设计报告.zip 该资源内项目代码都是经过测试运行成功,功能ok的情况下才上传的,请放心下载使用! 本项目适合计算机相关专业(如计科、人工智能、通信工程、自动化、电子信息等)的在校学生、老师或者企业员工下载使用,也适合小白学习进阶, 或者实际项目借鉴参考! 当然也可作为毕设项目、课程设计、作业、项目初期立项演示等。如果基础还行,也可在此代码基础上进行修改,以实现其他功能。 说明 1. 新手建议结合pycharm使用,https://www.jetbrains.com/pycharm/,下载专业版试用30天。 2. 注册普通用户通过web界面来设置,创建创建用户通过creeatsuperuser创建。下文有详细命令 3. 导入电影信息通过insert_movies_script.py来操作 (会删除已有的所有信息!) 4. 前端展示 浏览最多,评分最多,收藏最多,写的比较直白,你可以改的委婉点: 最热电影,火爆排行...之类的。每种有10条。 我猜你喜欢为基于用户推荐,item推荐为基于项目推荐。两种推荐思路下文有介绍 系统采用的技术 前端: bootstrap3 css 框架 后端: django 2.2.1 + sqlite3数据库 (MVC框架) 数据: python异步爬虫从豆瓣top250抓取数据,保存到本地csv文件中 主要功能: 录入图书信息,用户打分,电影标签分类,电影推荐,电影分享,电影收藏,后台管理系统。 整体采用MVC架构,前端页面通过django template模板来实现,实现了模板的复用功能。同时前端页面的组织结构较为清晰。 推荐算法思路 通过协调过滤计算和其他用户的距离,然后进行筛选。如果用户数量不足,推荐数目不够15条,就会自动从 所有未打分的电影中按照浏览数降序选一部分填充进去。 基于用户的推荐 1. 用户需要给电影打分。通过用户已打分的部分来计算相似度,如果用户未打分,或者没有其他用户,则按照浏览数降序返回。 2. 通过pearson算法来计算用户之间的距离,找到距离最近的N个用户。将这些用户中已打分的电影(且要推荐的用户未看过的部分)返回。 基于item的推荐 1. 计算物品相似度矩阵: https://www.jianshu.com/p/27b1c035b693 2. 遍历当前用户已打分的item,计算和未打分的item的相似距离。 3. 对相似距离进行排序 返回 主要实现的功能 1. 登录注册页面 2. 基于协同过滤的电影的分类,排序,搜索,打分,排序功能。 3. 基于协同过滤的周推荐和月推荐 4. 观影分享会等活动功能,用户报名功能 (需要额外添加) 5. 发帖留言论坛功能 (要额外添加) 6. 基于spark的ALS算法 (要额外添加) 7. Mysql适配 8. movielens数据集适配 fixed 1. 首页导航栏链接错误 2. 首页面为空 3. 登录注册页面 4. 推荐跳转登录 5. 周推荐用户没有评分时随机推荐 6. 按照收藏数量排序 7. 重新设计了 action 和UserAction model,拆分出了UserAction 电影模型 1. 浏览量 每次刷新页面的浏览数 2. 收藏量 user manytomany field 每个用户收藏一次 3. 评分 rate 每个用户评分一次 4. 在电影下面的评论加点赞功能 安装运行方法 安装依赖 1. 将项目导入pycharm, 在pycharm配置python解释器,3.7及以下都可以。可以通过conda或者其他的虚拟环境来安装 2. 打开终端 输入pip install -r requirements.txt 若提示无pip。去下载get-pip.py 运行python get-pip.py 3. 在pip安装过程中如果报错C++ 14依赖问题。则安装c++依赖工具。找不到找我要。如果安装速度过慢,请更换国内镜像https://blog.csdn.net/chenghuikai/article/details/55258957 4. 安装成功后,进入运行阶段 运行 1. 运行服务器: python manage.py runserver 2. 如果无数据,运行项目根目录下的数据迁移脚本 populate开头。 3. python manage.py createsuperuser 创建超级管理员, (密码输入时终端暂时看不到) 4. 进入后台: 127.0.0.1:8000/admin

64,661

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧