本文实例为大家分享了python将两张图片生成全景图片的具体代码,供大家参考,具体内容如下

1、全景图片的介绍

全景图通过广角的表现手段以及绘画、相片、视频、三维模型等形式,尽可能多表现出周围的环境。360全景,即通过对专业相机捕捉整个场景的图像信息或者使用建模软件渲染过后的图片,使用软件进行图片拼合,并用专门的播放器进行播放,即将平面照片或者计算机建模图片变为360 度全观,用于虚拟现实浏览,把二维的平面图模拟成真实的三维空间,呈现给观赏者。

2、如何实现

2.1、实现原理

主要是利用sift的特征提取与匹配,参考链接

2.2、实现代码

# -*- coding:utf-8 -*-

u'''

Created on 2019年6月14日

@author: wuluo

'''

__author__ = 'wuluo'

__version__ = '1.0.0'

__company__ = u'重庆交大'

__updated__ = '2019-06-14'

import numpy as np

import cv2 as cv

from PIL import Image

from matplotlib import pyplot as plt

print('cv version: ', cv.__version__)

def pinjie():

top, bot, left, right = 100, 100, 0, 500

img1 = cv.imread('G:/2018and2019two/qianrushi/wuluo1.png')

cv.imshow("img1", img1)

img2 = cv.imread('G:/2018and2019two/qianrushi/wuluo2.png')

cv.imshow("img2", img2)

srcImg = cv.copyMakeBorder(

img1, top, bot, left, right, cv.BORDER_CONSTANT, value=(0, 0, 0))

testImg = cv.copyMakeBorder(

img2, top, bot, left, right, cv.BORDER_CONSTANT, value=(0, 0, 0))

img1gray = cv.cvtColor(srcImg, cv.COLOR_BGR2GRAY)

img2gray = cv.cvtColor(testImg, cv.COLOR_BGR2GRAY)

sift = cv.xfeatures2d_SIFT().create()

# find the keypoints and descriptors with SIFT

kp1, des1 = sift.detectAndCompute(img1gray, None)

kp2, des2 = sift.detectAndCompute(img2gray, None)

# FLANN parameters

FLANN_INDEX_KDTREE = 1

index_params = dict(algorithm=FLANN_INDEX_KDTREE, trees=5)

search_params = dict(checks=50)

flann = cv.FlannBasedMatcher(index_params, search_params)

matches = flann.knnMatch(des1, des2, k=2)

# Need to draw only good matches, so create a mask

matchesMask = [[0, 0] for i in range(len(matches))]

good = []

pts1 = []

pts2 = []

# ratio test as per Lowe's paper

for i, (m, n) in enumerate(matches):

if m.distance < 0.7 * n.distance:

good.append(m)

pts2.append(kp2[m.trainIdx].pt)

pts1.append(kp1[m.queryIdx].pt)

matchesMask[i] = [1, 0]

draw_params = dict(matchColor=(0, 255, 0),

singlePointColor=(255, 0, 0),

matchesMask=matchesMask,

flags=0)

img3 = cv.drawMatchesKnn(img1gray, kp1, img2gray,

kp2, matches, None, **draw_params)

#plt.imshow(img3, ), plt.show()

rows, cols = srcImg.shape[:2]

MIN_MATCH_COUNT = 10

if len(good) > MIN_MATCH_COUNT:

src_pts = np.float32(

[kp1[m.queryIdx].pt for m in good]).reshape(-1, 1, 2)

dst_pts = np.float32(

[kp2[m.trainIdx].pt for m in good]).reshape(-1, 1, 2)

M, mask = cv.findHomography(src_pts, dst_pts, cv.RANSAC, 5.0)

warpImg = cv.warpPerspective(testImg, np.array(

M), (testImg.shape[1], testImg.shape[0]), flags=cv.WARP_INVERSE_MAP)

for col in range(0, cols):

if srcImg[:, col].any() and warpImg[:, col].any():

left = col

break

for col in range(cols - 1, 0, -1):

if srcImg[:, col].any() and warpImg[:, col].any():

right = col

break

res = np.zeros([rows, cols, 3], np.uint8)

for row in range(0, rows):

for col in range(0, cols):

if not srcImg[row, col].any():

res[row, col] = warpImg[row, col]

elif not warpImg[row, col].any():

res[row, col] = srcImg[row, col]

else:

srcImgLen = float(abs(col - left))

testImgLen = float(abs(col - right))

alpha = srcImgLen / (srcImgLen + testImgLen)

res[row, col] = np.clip(

srcImg[row, col] * (1 - alpha) + warpImg[row, col] * alpha, 0, 255)

# opencv is bgr, matplotlib is rgb

res = cv.cvtColor(res, cv.COLOR_BGR2RGB)

# show the result

plt.figure()

plt.imshow(res)

plt.show()

else:

print("Not enough matches are found - {}/{}".format(len(good), MIN_MATCH_COUNT))

matchesMask = None

if __name__ == "__main__":

pinjie()

3、运行效果

原始的两张图:

效果图:

原始图,水杯没有处理好,导致此处效果不好。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

python生成图片链接_python如何将两张图片生成为全景图片相关推荐

  1. python两张图片无缝合成一张_python如何将两张图片生成为全景图片

    本文实例为大家分享了python将两张图片生成全景图片的具体代码,供大家参考,具体内容如下 1.全景图片的介绍 全景图通过广角的表现手段以及绘画.相片.视频.三维模型等形式,尽可能多表现出周围的环境. ...

  2. python生成图片链接_python 实现图片上传接口开发 并生成可以访问的图片url

    版本:python3.7 功能,开发一个用户访问的页面,支持图片上传,并将其保存在服务器. 项目结构: app.py文件内容如下: from flask import Flask, Response, ...

  3. python学习之将两张图片生成为全景图片

    文章目录 1.全景图片的介绍 2.如何实现 2.1.实现原理 2.2.实现代码 3.运行效果 1.全景图片的介绍 全景图通过广角的表现手段以及绘画.相片.视频.三维模型等形式,尽可能多表现出周围的环境 ...

  4. Word5——同一行带题注的两张图片生成的图表目录在同一行的解决办法

    每张图片通过题注来编号的,同一行的两张图片生成图目录就会在同一行,这也太不美观了. 解决办法一:将图片放到表格里,然后隐藏表格边框就好了 再次生成目录 问题解决了!!! 解决办法二是插入图文框,这个操 ...

  5. python相似图片计算_计算两张图片相似度的方法总结

    python工具包-pyssim 简介 python工具包,用来计算图像之间的结构相似性 (Structural Similarity Image Metric: SSIM).结构相似性介绍详见:ht ...

  6. python图像检测_Python+Opencv识别两张相似图片

    在网上看到python做图像识别的相关文章后,真心感觉python的功能实在太强大,因此将这些文章总结一下,建立一下自己的知识体系. 当然了,图像识别这个话题作为计算机科学的一个分支,不可能就在本文简 ...

  7. python 拼接图片_Python实现拼接多张图片的方法

    本文实例讲述了Python实现拼接多张图片的方法.分享给大家供大家参考.具体分析如下: 这里所述计划实现如下操作: ① 用Latex写原始博文,生成PDF文档; ② 将PDF转成高清的PNG格式的图片 ...

  8. python图合并_Python图像处理实现两幅图像合成一幅图像的方法【测试可用】

    本文实例讲述了Python图像处理实现两幅图像合成一幅图像的方法.分享给大家供大家参考,具体如下: 将两幅图像合成一幅图像,是图像处理中常用的一种操作,python图像处理库PIL中提供了多种种将两幅 ...

  9. 用python实现单例模式_Python单例模式的两种实现方式

    单例模式(Singleton Pattern)是一种常用的软件设计模式,该模式的主要目的是确保某一个类只有一个实例存在.当你希望在整个系统中,某个类只能出现一个实例时,单例对象就能派上用场. 比如,某 ...

最新文章

  1. Snackbar源码分析
  2. 基于.NET实现数据挖掘--朴素贝叶斯算法
  3. Angular self study 3 - data binding
  4. 洛谷 P1816 忠诚 ST函数
  5. 数据结构与算法专题——第一题 Bitmap算法
  6. 『嗨威说』数据结构 - 第七章学习内容小结
  7. 2021-2025年中国充气救生衣行业市场供需与战略研究报告
  8. 093-PHP数组比较
  9. 我的常用数据软件大公开
  10. python实验报告六_Python 基础语法
  11. Aruba7010 默认密码_收藏 | 各大品牌的变频器默认密码、万能密码、超级密码汇总...
  12. 【英语魔法俱乐部——读书笔记】 3 高级句型-简化从句倒装句(Reduced Clauses、Inverted Sentences) 【完结】...
  13. 轻松插入Word页眉页脚
  14. oracle 11 ora 12514,oracle 11g ORA 12514错误,我的解决办法
  15. Xcode:崩溃堆栈符号化,定位崩溃
  16. 节拍器在学习音乐过程中起到什么作用?-小星星节拍器怎么样?
  17. win7计算机桌面快捷键显示,Win7的显示桌面在哪 Win7显示桌面快捷键是什么
  18. 苹果电脑php开发工具,Mac系统下给力的PHP开发工具
  19. 计算机组成原理 微机,【2017年整理】计算机组成原理-微机实验指导书.doc
  20. 祝贺:美云智数进入云安全联盟,《2021零信任落地案例集》

热门文章

  1. 利用处理程序错误***(下)
  2. zabbix mysql trapper_分分钟一键部署Zabbix Server
  3. php 7怎么安装mysql_php7如何安装mysql扩展
  4. 基于linux桌面3d面打印机,基于DLP技术的桌面级3D打印机研发
  5. 你了解MySQL 主从复制吗?
  6. Jmeter设置环境变量支持在任意终端目录输入jmeter直接启动
  7. 【7】测试用例设计-等价类分析法
  8. 毕业从事汽车行业,转行测试工程师,3个月完成了蜕变,我很满意...
  9. 下一个十年,什么样的测试会被大厂争抢?
  10. 安装 mysql 数据库_小水谈Mysql数据库---Mysql安装