OpenCV将两张图片拼接成一张图片

这篇具有很好参考价值的文章主要介绍了OpenCV将两张图片拼接成一张图片。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

  • 可以用opencv或者numpy的拼接函数,直接将两张图拼接到一起,很简单方便,参考代码2,推荐此方式
  • 新建图片,将两张图片的像素值填充到新图片对应位置上即可,参考代码1。

示例代码1

以下是将两张图片拼接成一张图片的示例代码:

import cv2
import numpy as np 

# 三通道
img1 = cv2.imread('image1.jpg')
img2 = cv2.imread('image2.jpg')

# 确定两张图片的大小
height, width, channels = img1.shape
new_width = width + img2.shape[1]

# 创建一张新的图片
new_img = np.zeros((height, new_width, channels), dtype=np.uint8)

# 将第一张图片复制到新图片的左侧
new_img[:,:width,:] = img1

# 将第二张图片复制到新图片的右侧
new_img[:,width:,:] = img2

# 显示合并后的图片
cv2.imshow('Merged Image', new_img)

# 等待关闭窗口
cv2.waitKey(0)

# 释放资源
cv2.destroyAllWindows()

示例代码2

以下是将两张图片在同一个窗口显示的示例代码:

import cv2
import numpy as np 

img1 = cv2.imread('image1.jpg')
img2 = cv2.imread('image2.jpg')

## 使用numpy
# 将两张图片垂直堆叠
img_vstack = np.vstack((img1, img2))

# 将两张图片横向拼接在一起
result = np.hstack([img1, img2])

# 将两张图片拼接到一起
img = np.concatenate((img1, img2), axis=1)

## 使用opencv
vimg = cv2.vconcat((img1, img2)) # 垂直方向
himg = cv2.hconcat((img1, img2)) # 水平方向

# 显示图片
cv2.imshow('Two Images in One Window', img_vstack)
cv2.waitKey(0)
cv2.destroyAllWindows()

代码示例3

首先需要安装 xlrdxlwt 模块,可以使用以下命令安装:

pip install xlrd
pip install xlwt

然后可以使用以下代码将图片写入 Excel 单元格内,并调整单元格大小与图片匹配:

import xlwt
import xlrd
from PIL import Image

# 打开 Excel 文件
book = xlwt.Workbook(encoding='utf-8')
sheet = book.add_sheet('Sheet1')

# 打开图片文件,并设置图片大小
img = Image.open('image.jpg')
img_width, img_height = img.size

# 设置单元格宽度和高度与图片宽度和高度一致
sheet.col(0).width = img_width
sheet.row(0).height = img_height

# 将图片写入单元格
sheet.insert_bitmap('image.jpg', 0, 0)

# 保存 Excel 文件
book.save('image.xls')

此代码是将一张名为 image.jpg 的图片写入 Excel 的第一行第一列的单元格内,并设置单元格宽度和高度与图片宽度和高度一致。保存 Excel 文件的名字为 image.xls。如果需要批量处理多张图片,可以使用循环语句来遍历所有图片。

示例代码4

以下是一个示例代码,可以实现将指定文件夹内所有图片路径及其对应的图片插入到指定的Excel表格内,并调整单元格大小以适应图片大小:

import os
from openpyxl import Workbook
from openpyxl.utils import get_column_letter
from openpyxl.drawing.image import Image

# 设置文件夹路径和Excel文件名
folder_path = r"C:\folder_path"
excel_file = "images.xlsx"

# 创建Excel工作簿
wb = Workbook()
ws = wb.active

# 获取文件夹内所有图片路径和文件名
img_files = [f for f in os.listdir(folder_path) if f.endswith('.jpg') or f.endswith('.png')]

# 将文件名和路径分别写入Excel单元格
for i, img_file in enumerate(img_files):
    row = i + 1
    img_path = os.path.join(folder_path, img_file)
    ws.cell(column=1, row=row, value=img_file)
    ws.cell(column=2, row=row, value=img_path)

    # 将图片插入Excel单元格并调整单元格大小
    img = Image(img_path)
    img_width, img_height = img.width, img.height
    ws.row_dimensions[row].height = img_height / 3  # 调整行高
    ws.column_dimensions[get_column_letter(3)].width = img_width / 6  # 调整列宽

	# 将图片添加到单元格中
    cell = sheet.cell(row=i+1, column=1)
    cell.value = img_path 
    cell.alignment = openpyxl.styles.Alignment(horizontal='center', vertical='center')
    # cell._style = openpyxl.styles.NamedStyle(name='Hyperlink', 
    #                                          hyperlink=f'HYPERLINK("{image_path}")')
    ws.add_image(img, f"C{row}")  # 在指定单元格添加图片

# 保存Excel文件
wb.save(excel_file)

在上述代码中,我们使用了openpyxl库来处理Excel表格,并使用os库来获取指定文件夹内的所有图片文件路径和文件名。对于每个图片文件,我们将其文件名和路径分别写入Excel单元格的第1列和第2列,然后将该图片插入Excel单元格的第3列并调整单元格大小以适应图片大小。最后保存Excel文件。文章来源地址https://www.toymoban.com/news/detail-758470.html

到了这里,关于OpenCV将两张图片拼接成一张图片的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MidJourney教程03--BLEND 两张图片合成一张图片

    MidJourney教程02--BLEND 两张图片合成一张图片 首先输入   然后会让你选择两张图片进行处理!  那么,现在我们把比卡丘,和路飞融合在一起啦!  接下来看出来效果会是怎么样子呢? 那么,我们就得到了一个路飞比卡丘! 其实还有很多种方法可以使用! 例如场景与产品的

    2024年02月15日
    浏览(41)
  • 使用ffmpeg拼接两张图片

      最近在工作中遇到了一个需求,就是需要将两张图片拼接在一起,作为一个封面图。如果只是临时拼接一张,我们可以只用photoshop之类的图片编辑工具,将两张图片拼接在一起。而我们的需要是需要实现自动化,由于之前使用过ffmpeg做过图片的操作,于是搜索了下,ffm

    2024年02月02日
    浏览(29)
  • OpenCV Python – 使用SIFT实现两张图片的特征匹配

     我们使用尺度不变特征变换(  SIFT  )特征描述符和暴力匹配算法实现两张图像的特征匹配。其中,  SIFT  用于找到图像中的关键点和描述符,而  暴力匹配算法  用于在两张图像中匹配描述符。 要使用  SIFT  特征检查器和  暴力  匹配算法实现两张图像的特征匹配,可

    2024年02月03日
    浏览(49)
  • OpenCV Python – 使用SIFT算法实现两张图片的特征匹配

    1.要实现在大图中找到任意旋转、缩放等情况下的小图位置,可以使用特征匹配算法,如 SIFT (尺度不变特征变换) 或 SURF (加速稳健特征)。这些算法可以在不同尺度和旋转情况下寻找匹配的特征点 2.我们使用了 SIFT 算法检测和匹配特征点,然后使用 RANSAC 算法计算透视变换矩阵

    2024年02月06日
    浏览(47)
  • Python 结合opencv实现图片截取和拼接

    python 3.6.2 scikit-build-0.16.7 win10 opencv_python-4.5.4.60-cp36-cp36m-win_amd64.whl 下载地址: https://pypi.org/project/opencv-python/4.5.4.60/#files https://files.pythonhosted.org/packages/57/6c/7f4f56b2555d5c25dd4f41fc72a16dc6402cb2b4f967da11d8d26c669b55/opencv_python-4.5.4.60-cp36-cp36m-win_amd64.whl 注意:下载时不用下abi版的,比如 o

    2024年02月08日
    浏览(43)
  • Python Opencv实践 - 全景图片拼接stitcher

            由于手里没有切割好的全景图片资源,因此首先写了一个切片的程序spliter。         如果有现成的切割好的待拼接的切片文件,则不需要使用spliter。         对于全景图片的拼接,需要注意一点,各个切片图片之间要有重复的内容以便opencv能够提取到关键点并

    2024年02月22日
    浏览(47)
  • 如何用python的opencv库查看一张图片的坐标点

    介绍 安装 OpenCV 绘制矩形 查看点坐标 总结 OpenCV 是一个开源的计算机视觉库,提供了丰富的图像处理和计算机视觉功能。在科学研究、计算机视觉应用以及机器学习领域,它都被广泛应用。本文将介绍如何使用 Python 的 OpenCV 库来查看一张图片的坐标点。 在开始之前,我们首

    2024年02月12日
    浏览(44)
  • python opencv:批量识别拼接图片分界线并进行自动裁剪

    在网上找图片素材时,有很多的图片是长图片,在一张图片上拼接了许多张图片,而很多时候我们需要单张图片,此时就需要将长图进行裁剪,一般可以用图片工具进行简单裁剪,高级点可以采用ps进行切片处理,如果图片数量少还好说一旦有大量的图片需要裁剪就很繁琐并

    2024年02月11日
    浏览(47)
  • 3 OpenCV两张图片实现稀疏点云的生成

    前文: 1 基于SIFT图像特征识别的匹配方法比较与实现 2 OpenCV实现的F矩阵+RANSAC原理与实践 1.1 由F到E E = K T ∗ F ∗ K E = K^T * F * K E = K T ∗ F ∗ K E 矩阵可以直接通过之前算好的 F 矩阵与相机内参 K 矩阵获得 相机内参获得的方式是一个较为复杂的方式,需要使用棋盘进行定位获得

    2024年02月07日
    浏览(33)
  • OpenCV将两幅图像拼在一起(Python)

    主要使用numpy库数组拼接np.concatenate 使用示例如下 当axis为0时,将几个数组纵向拼接 当axis为1时,将几个数组横向拼接 这里默认拼接的两张图像等宽或者等高 其中,interval指两张图片之间的间隙。 横向拼接时,应该使interval的高度与图片的高度相同,interval的宽度可以自己设

    2024年02月16日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包