文章目录

  • 带拼接图片
  • 基于SIFT特征点和RANSAC方法得到的图像特征点匹配结果
  • 图像变换结果
  • 完整代码

带拼接图片


基于SIFT特征点和RANSAC方法得到的图像特征点匹配结果

图像变换结果

完整代码

# 读取图像
import cv2 #opencv读取的格式是BGR
import matplotlib.pyplot as plt
import numpy as np img=cv2.imread('right.jpg')
img2=cv2.imread('left.jpg')def detectAndCompute(image):image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)sift = cv2.xfeatures2d.SIFT_create()(kps, features) = sift.detectAndCompute(image, None)kps = np.float32([kp.pt for kp in kps]) # 得到的点需要进一步转换才能使用return (kps, features)
def matchKeyPoints(kpsA, kpsB, featuresA, featuresB, ratio = 0.75, reprojThresh = 4.0):# ratio是最近邻匹配的推荐阈值# reprojThresh是随机取样一致性的推荐阈值matcher = cv2.BFMatcher()rawMatches = matcher.knnMatch(featuresA, featuresB, 2)matches = []for m in rawMatches:if len(m) == 2 and m[0].distance < ratio * m[1].distance:matches.append((m[0].queryIdx, m[0].trainIdx))kpsA = np.float32([kpsA[m[0]] for m in matches]) # 使用np.float32转化列表kpsB = np.float32([kpsB[m[1]] for m in matches])(M, status) = cv2.findHomography(kpsA, kpsB, cv2.RANSAC, reprojThresh)return (M, matches, status) # 并不是所有的点都有匹配解,它们的状态存在status中def stich(imgA, imgB, M):result = cv2.warpPerspective(imgA, M, (imgA.shape[1] + imgB.shape[1], imgA.shape[0]))result[0:imgA.shape[0], 0:imgB.shape[1]] = imgBcv_show('result', result)def drawMatches(imgA, imgB, kpsA, kpsB, matches, status):(hA, wA) = imgA.shape[0:2](hB, wB) = imgB.shape[0:2]# 注意这里的3通道和uint8类型drawImg = np.zeros((max(hA, hB), wA + wB, 3), 'uint8')drawImg[0:hB, 0:wB] = imgBdrawImg[0:hA, wB:] = imgAfor ((queryIdx, trainIdx),s) in zip(matches, status):if s == 1:# 注意将float32 --> intpt1 = (int(kpsB[trainIdx][0]), int(kpsB[trainIdx][1]))pt2 = (int(kpsA[trainIdx][0]) + wB, int(kpsA[trainIdx][1]))cv2.line(drawImg, pt1, pt2, (0, 0, 255))cv_show("drawImg", drawImg)#图像的显示,也可以创建多个窗口
def cv_show(name,img):cv2.imshow(name,img) # 等待时间,毫秒级,0表示任意键终止cv2.waitKey(0) cv2.destroyAllWindows()
(kpsA, featuresA) = detectAndCompute(img)(kpsB, featuresB) = detectAndCompute(img2)(M, matches, status) = matchKeyPoints(kpsA, kpsB, featuresA, featuresB)# 绘制匹配结果
drawMatches(img, img2, kpsA, kpsB, matches, status)stich(img, img2, M)

opencv-图像融合拼接相关推荐

  1. MATLAB图像融合拼接

    MATLAB图像融合拼接 本文说明的内容是图像拼接,采用基于特征点的匹配方法将两张定点拍摄的照片进行拼接,合成一张图,将全景图生成简化成两张图片的拼接,具体可以分为以下几点: 掌握图像灰度化.图像投影 ...

  2. opencv图像融合

    大家好,我是csdn的博主:lqj_本人 这是我的个人博客主页: lqj_本人的博客_CSDN博客-微信小程序,前端,python领域博主lqj_本人擅长微信小程序,前端,python,等方面的知识h ...

  3. OpenCV 进行图像融合拼接

    环境: 运行环境:Win10 x64 OpenCV 版本: 4.5.1 源代码: #include <iostream> #include <vector> #include ...

  4. opencv 图像融合

    图像相加 要叠加两张图片,可以用cv.add()函数,相加两幅图片的形状(高度/宽度/通道数)必须相同.numpy中可以直接用res = img + img1相加,但这两者的结果并不相同: impor ...

  5. opencv图像融合(给人脸添加一个眼镜)

    基于dlib68点人脸检测的小功能实现 图像旋转找的现成的方法,稍稍麻烦点的地方就是mask处理,虽然目的达到了,但是效果一般 1 import numpy as np 2 import cv2 as ...

  6. OpenCV图像处理使用笔记(四)——图像融合

    前言常用 1.在OpenCV中定义了好多函数用来操作图像矩阵,有两个矩阵相加的,相减的,混合的,下面我使用QT加OpenCV演示图像融合这个函数. 2.我的IDE是Qt creator,OpenCV的 ...

  7. 电力设备红外和可见光图像配准方法(不含图像融合算法)

    前言: 以下是最近将我开源的算法代码转发还标为原创的盗版博主及对应博文: [1] 博主:Matlab科研工作室← 引流到自己公众号下载 [2] 博主:紫极神光 ← 让人付费下载 [!!!强调!!!] ...

  8. python 图像无缝拼接,OpenCV Python 系列教程3 - Core 组件

    基本知识 灰度图像的存储方式: image 多通道图像存储方式 image OpenCV 中的通道存储为 BGR 像素值的存储方式 RGB 模式,显示设备采用这种模式 HSV.HLS 将颜色分解成色调 ...

  9. OpenCV精进之路(十六):图像分解和融合技术——图像拼接和图像融合技术

    图像拼接在实际的应用场景很广,比如无人机航拍,遥感图像等等,图像拼接是进一步做图像理解基础步骤,拼接效果的好坏直接影响接下来的工作,所以一个好的图像拼接算法非常重要. 再举一个身边的例子吧,你用你的手 ...

  10. opencv 图像拼接和图像融合技术

    图像拼接在实际的应用场景很广,比如无人机航拍,遥感图像等等,图像拼接是进一步做图像理解基础步骤,拼接效果的好坏直接影响接下来的工作,所以一个好的图像拼接算法非常重要. 再举一个身边的例子吧,你用你的手 ...

最新文章

  1. Apache Maven 入门篇
  2. OpenCV Mat的数据类型
  3. yum只下载软件不安装的两种方法
  4. python 视频和图片转换 视频压缩 图片降低分辨率 图像处理
  5. STM32的学习记录--2.WiFi模块的使用
  6. 关于解决并发问题,99%的程序员都会忽略的一个重要方案!
  7. Android 手机常见问答
  8. 手机UI界面模板psd源文件格式!
  9. windows 2012 r2 can't find kb2919355
  10. 项目管理九要与八不要
  11. URL和URI的区别及理解
  12. Pandas基础|列方向分组变形
  13. webstorm,idea 右键菜单管理
  14. 2018招商银行笔试题——团建活动
  15. 如何用计算机进行文件夹整理,如何对电脑文件进行分类整理,试试下面这四个步骤...
  16. java实现定时自动打卡脚本_android 定时自动上班手机打卡签到实例
  17. 数据仓库系列4-维度表
  18. 拉格朗日乘子法(Lagrange Multiplier) 和KKT条件
  19. 投资人为什么盯上了这些“小巨人”?
  20. 计算机桌面无喇叭显示器,电脑屏幕下面有小喇叭图标但是没有声音怎么处理

热门文章

  1. 外媒:忘掉微软 Win11 吧
  2. oracle lag group,Oracle中的lag()和lead()函数的简单用法(统计增长率)
  3. Java获取下周、本周、上月、本月第一天最后一天
  4. 泪目:我看不清你的脸,可我知道你在守护我平安
  5. docker 网络相关与坑
  6. canon相机api中文_您应该在佳能相机上掌握的10种相机设置
  7. ad模数转换采集电压程序c语言,使用单片机自带AD转换采样电位器,进行PWM调光...
  8. 几种常用的接口协议的积累,欢迎补充
  9. 封闭式基金高折价蕴涵巨大投资机会
  10. 魅族MX5和努比亚布拉格手机参数对比