一. 情景引入

当我们要分析两张图片的关系,或者两张图片中特定区域的对应关系时,可用该方法。
可视化效果图如下:

二. 原理介绍与代码实现

原理:把两张图的像素映射到范围为[0,1]的区间,以第一张图的像素值为x坐标,另一张图的像素值为y坐标,从而组成平面中的点,将这些点显示在幕布中就是上面的效果。由于图片一般有三个通道(BGR),所以用三种不同颜色的点表示,三种颜色的点表示每个通道的关系。
我们分析下面两张图的关系:

import math
import cv2
import numpy as npdef draw_axis(image):white_color = (255, 255, 255)w, h = image.shape[1], image.shape[0]cv2.line(image, (0, 0), (0, h), white_color, thickness=3)cv2.line(image, (0, h), (w, h), white_color, thickness=3)axis_height = 8xs = (np.linspace(0, 1, 11) * (w - 1)).astype(np.int32)for x in xs:cv2.line(image, (x, h-1), (x, h-1-axis_height), white_color, thickness=3)ys = (np.linspace(0, 1, 11) * (h - 1)).astype(np.int32)for y in ys:cv2.line(image, (0, y), (axis_height, y), white_color, thickness=3)return imagedef draw_coord(image, x, y, show_cn=None):if show_cn is None:show_cn = [0, 1, 2]elif not isinstance(show_cn,(tuple,list)):show_cn = [show_cn]if x.ndim == 3:x = np.reshape(x, (-1, x.shape[-1]))if y.ndim == 3:y = np.reshape(y, (-1, y.shape[-1]))bgr_colors = [(1, 0, 0), (0, 1, 0), (0, 0, 1)]min_color = 80max_color = 255w, h = image.shape[1], image.shape[0]image = draw_axis(image)for cn in show_cn:points = {}for px, py in zip(x[:, cn], y[:, cn]):point = (int(round(px * (w-1))), int(round((1 - py) * (h-1))))points.setdefault(point, 0)points[point] += 1point_nums = [num for num in points.values()]min_point_nums = np.min(point_nums)max_point_nums = np.max(point_nums)for point, num in points.items():color = min_color + (max_color - min_color) * (num - min_point_nums) / (max_point_nums - min_point_nums)color = np.array(bgr_colors)[cn] * colorcolor = np.clip(color, 0, 255)cv2.circle(image, point, 1, color.tolist(), -1)cv2.imwrite("analysis_result.jpg", image)if __name__ == "__main__":img1 = cv2.imread("img1.png")img1 = cv2.resize(img1, (512, 512))img2 = cv2.imread("img2.png")img2 = cv2.resize(img2, (512,512))x = img1.astype(np.float32) / 255y = img2.astype(np.float32) / 255coord_img = np.zeros_like(img1)draw_coord(coord_img, x, y)

运行上面的代码后,就会生成上面的分析结果图片。

每天进步一点,关注博主,下期更精彩!!!

如何分析两张图片的对应关系?相关推荐

  1. matlab 立体双目,correl sp matlab 实现双目视觉的三维重建 利用两张图片 信息 276万源代码下载- www.pudn.com...

    文件名称: correlCorresp下载  收藏√  [ 5  4  3  2  1 ] 开发工具: matlab 文件大小: 759 KB 上传时间: 2015-05-26 下载次数: 67 提 ...

  2. java 图片相似搜索_JAVA比较两张图片相似度的方法

    本文实例讲述了JAVA比较两张图片相似度的方法.分享给大家供大家参考.具体如下: 摘要: importjava.awt.image.BufferedImage; importjava.io.File; ...

  3. 使用opencv查找两张图片不同的部分

    简介 有一款游戏叫<大家一起来找茬>不知道大家有没有玩过,就是给出2张相似图片,在规定的时间内找出图片上有几处不同并标记出来.本文将介绍如何通过opencv替代肉眼快速找出准确的答案. 材 ...

  4. Python计算两张图片的相似度

    目录 一.场景需求解读 二.Mean Squared Error (MSE)简介 三.The Structural Similarity Index (SSIM)简介 四.算法代码实现 五.效果展示与 ...

  5. chatgpt赋能python:Python两张图片对比:初学者与专家的编程经验

    Python两张图片对比:初学者与专家的编程经验 Python作为一门高效.易学.强大的编程语言,自问世以来就获得了广泛的应用和认可.无论你是初学者还是有多年的编程经验,Python都能为你的工作和学 ...

  6. 如何评估两张图片的差异

    如何评估两张图片的差异 方法一,图像直方图比较 就像人的指纹一样,没有哪两张的照片的直方图会是一样的(拍摄的图片),所以只要将两张图片拉倒ps里面看直方图就可以了. 方法二,DiffImg 方法三,I ...

  7. PIL实现两张图片合成一张,和图片加文字

    PIL实现两张图片合成一张,和图片加文字 文章目录: 一.PIL实现两张图片合成一张 1.方法一: 2.方法二 二.图片添加文字 首先说明一下: (小姐姐是谁,是my sweetheart ,请勿使用 ...

  8. 神经网络训练集两张图片之间的相互作用

    在<神经网络分类训练集的图片到底是如何相互影响的?>中得到了一个经验关系,如果(两张图片)混合后的迭代次数变小了,分类准确率可能变大:如果二者混合后迭代次数变大,分类准确率可能会变小.但上 ...

  9. html 图片能重叠吗,css两张图片怎么叠加在一起?

    1.新建一个html文件,命名为test.html,用于讲解css怎么把两个图片叠加在一起. Document 2.新建两个div,一个是class属性为a的div,另一个是class属性为b的div ...

最新文章

  1. java中bjt和utc转化_如何在Java中转换UTC和本地时区
  2. WIN10系统上,新建AliOS Things项目
  3. c语言地图导航代码大全,C语言实训—电子地图导航系统源代码.docx
  4. 如何修改Win7开机登陆界面背景图片
  5. php获取当前时间戳方法
  6. 使用sqlite3创建数据库表的时候须要注意
  7. 阿里云经典网络与Rancher VXLAN兼容性问题
  8. win10删除开机密码_win10系统,电脑密码和微软密码都忘记了,怎么办? Day22
  9. C#中的深度学习:了解神经网络架构
  10. html5飞机发射教程,Javascript学习笔记(13_5) --js事件(飞机发射子弹)
  11. 域渗透——Pass The Hash Pass The Key
  12. 使用PyTorch建立您的第一个文本分类模型
  13. m序列 MATLAB仿真
  14. 域用户登陆显示计算机图标,PC用户或域用户登陆后任务栏无显示桌面的小图标...
  15. hunter 网络空间测绘
  16. 软件项目量化管理目标举例
  17. 二代旅游CMS网站管理系统使用手册(三)--计调线路团期录入
  18. 联通宽带拨号开机自动连接
  19. Java扫雷游戏心得体会总结_Java扫雷游戏: JMine
  20. oracle监控pga,oracle pga使用情况常用脚本:

热门文章

  1. android 禁用dlsym_[原创] 分享一个最近新撸增强版的绕过Android/iOS的dlopen/dlsym限制的dlfunctions库...
  2. 创意现代英文设计字体“具有现代设计创意的字体”
  3. 使用Beaglebone Black的PRU(一)
  4. python popen阻塞_python subprocess.Popen系列问题
  5. unsigned int用法
  6. x3dom:1.导入模型并显示
  7. Phillip and Trains
  8. memmove的实现
  9. 认知智能真的来了?且看道翰天琼认知智能三大技术体系!
  10. SQL中的cast 和convert的区别,日期操作