iis服务器助手广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Python如何利用ROI进行图像合成
  • 289
分享到

Python如何利用ROI进行图像合成

2023-06-20 13:06:09 289人浏览 泡泡鱼

Python 官方文档:入门教程 => 点击学习

摘要

本篇内容介绍了“python如何利用ROI进行图像合成”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!之前使用seamlessClone来合成

本篇内容介绍了“python如何利用ROI进行图像合成”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

之前使用seamlessClone来合成图片,但发现在两张图片的交集部分会出现一些小问题……

需求:

假设现在有一张图片(模板)中存在两个空格可以用来填照片(如下图所示):

Python如何利用ROI进行图像合成

图中,蓝色的圆圈和黄色的圆圈为需要替换的内容,其余部分可以视为一张png图片,且通过PS可知蓝圆黄圆的具体坐标,需要将下方的两张图片合成到上方的位置中:

Python如何利用ROI进行图像合成

ROI合成圆形区域

def input_circle_img(img, file_path, img_part_name, x, y, r):    for file in os.listdir(file_path):        if img_part_name in file:            path = file_path + "\\" + file            src = cv_imread(path)            src = cv.resize(src, (r * 2 + 4, r * 2 + 4))            h, w, ch = src.shape            mask = np.zeros(src.shape[:2], dtype=np.uint8)            mask = cv.circle(mask, (r + 1, r + 1), r, (255, 255, 255), -1)            imgROI = img[(y - r):(y + r), (x - r):(x + r)]            mask = mask/255.0            a =  mask[..., None]            for row in range(imgROI.shape[0]):                for col in range(imgROI.shape[1]):                    if a[row, col]:                        imgROI[row, col] = src[row, col]
参数说明
img模板图片对象,即上文中的第一幅图片
file_path需要替换的图片所在的文件路径,即上文中的1_测试.jpg和2_测试.jpg所在的文件夹路径
img_part_name即需要替换的图片的(部分)文件名,比如我想换的是“1_测试.jpg”,则此参数可以为“1_”也可以为全名~(需要注意的是:填写的字符串尽量为文件夹中唯一的标识符,例如填“_测试”则可能导致想要的文件被其它图片所覆盖)
x图片中心在模板中的横向位置(与模板左侧的距离)
y图片中心在模板中的纵向位置(与模板上侧的距离)
r图片出于模板中的实际半径

之所以+4是因为之前利用seamlessClone时边缘会收到原模板的影响,改成ROI后懒得该回去了,不加应该也没什么问题~

def export_comp_img(path):    print("[START] export_comp_img ...")    for file_path in os.listdir(path):        file_path = path + "\\" + file_path        # 创建画布方法,就是利用np.zeros,与本文无关就不放啦~        img = create_img(2400, 3600)        input_circle_img(img, file_path, "2_", 1862, 800, 440)        input_circle_img(img, file_path, "1_", 1247, 558, 315)        # input_rect_img(img, file_path, "3_", (0, 2202), (2400, 2944))        # 保存图片方法,就是利用imencode,与本文无关就不放啦~        save_img(img, file_path)

不出意外的话应该就可以得到下面的这张图片啦!~

Python如何利用ROI进行图像合成

然后再把模板的那张PNG图片盖到最上面——可以利用上文中mask的思路,也可以放到PS里面合成~这里一方面我需要在PS中进行后续的一些操作,另一方面也需要观察图片边缘的处理效果,因而选择了后者。

Python如何利用ROI进行图像合成

和模板里的位置完美对齐!~
PS:如果是除圆以外的不规则图形的话,可以通过改变mask实现——最粗暴的便是加载一张mask图片~
而若是单纯的矩形选区的话则无视mask即可~
至此完结!~下面是一些无关紧要的补充……

ROI合成矩形区域

def input_rect_img(img, file_path, img_part_name, start_point, end_point):    for file in os.listdir(file_path):        if img_part_name in file:            path = file_path + "\\" + file            src = cv_imread(path)            h = end_point[1] - start_point[1]            w = end_point[0] - start_point[0]            src = cv.resize(src, (w, h))            imgROI = img[start_point[1]:(start_point[1] + h),start_point[0]:(start_point[0] + w)]            for row in range(imgROI.shape[0]):                for col in range(imgROI.shape[1]):                    imgROI[row, col] = src[row, col]

seamlessClone合成圆形区域

值得一提的是,一开始我用的是seamlessClone方法,但尝试了三种模式效果均不理想:

def input_circle_img_seamlessClone(img, file_path, img_part_name, x, y, r):    for file in os.listdir(file_path):        if img_part_name in file:            path = file_path + "\\" + file            src = cv_imread(path)            src = cv.resize(src, (r * 2 + 4, r * 2 + 4))            h, w, ch = src.shape            mask = np.zeros(src.shape[:2], dtype=np.uint8)            mask = cv.circle(mask, (r + 1, r + 1), r, (255, 255, 255), -1)            center = (x, y)            output = cv.seamlessClone(src, img, mask, center, cv.MIXED_CLONE)            return output

MIXED_CLONE

Python如何利用ROI进行图像合成

NORMAL_CLONE

Python如何利用ROI进行图像合成

MONOCHROME_TRANSFER

Python如何利用ROI进行图像合成

NORMAL_CLONEMIXED_CLONE的区别主要看的是两个圆的交界处,但这两种方法的边缘都会有一个过渡的处理,不太适合套模板的时候用……

Python如何利用ROI进行图像合成”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注编程网网站,小编将为大家输出更多高质量的实用文章!

--结束END--

本文标题: Python如何利用ROI进行图像合成

本文链接: https://www.lsjlt.com/news/297232.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Python如何利用ROI进行图像合成
    本篇内容介绍了“Python如何利用ROI进行图像合成”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!之前使用seamlessClone来合成...
    99+
    2023-06-20
  • Python+OpenCV数字图像处理中如何进行ROI区域的提取
    本篇文章给大家分享的是有关Python+OpenCV数字图像处理中如何进行ROI区域的提取,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。1、实现原理先通过cv.cvtColor...
    99+
    2023-06-22
  • 如何用 Python 进行 OCR 图像识别
    这篇文章主要介绍“如何用 Python 进行 OCR 图像识别”,在日常操作中,相信很多人在如何用 Python 进行 OCR 图像识别问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何用 Python 进行...
    99+
    2023-06-15
  • 如何利用Python和OpenCV对图像进行加水印详解
    目录前言🌌 第 1 步:导入 OpenCV 并读取logo和要应用水印的图像💨 第 2步:计算两个图像的高度和宽度🚀 第 3 步:将水...
    99+
    2024-04-02
  • Python如何实现图像合成微缩效果
    本篇内容主要讲解“Python如何实现图像合成微缩效果”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python如何实现图像合成微缩效果”吧!合成微缩效果前言图像中的模糊效果可以强烈影响被拍摄场...
    99+
    2023-07-05
  • 如何进行Java ImageIO图像合并效率测试
    这篇文章给大家介绍如何进行Java ImageIO图像合并效率测试,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。通过纯Java的方式往一张底图(地图)上添加小图片(布点),发现效果并不理想。何为纯java方式?就是说这...
    99+
    2023-06-17
  • Python如何使用OpenCV对图像进行缩放功能
    这篇文章主要介绍了Python如何使用OpenCV对图像进行缩放功能,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。OpenCV:图片缩放和图像金字塔对图像进行缩放的最简单方法...
    99+
    2023-06-29
  • 如何使用PHP进行图像识别?
    随着人工智能技术的发展,图像识别在各个领域的应用越来越广泛。而PHP作为一种流行的Web编程语言,也可用于图像识别的应用。本文将介绍如何使用PHP进行图像识别。一、什么是图像识别?图像识别,也被称为图像分类或图像识别,是通过计算机程序对数字...
    99+
    2023-05-21
    机器学习 PHP 图像识别
  • 如何利用Python将彩色图像转为灰度图像
    小编给大家分享一下如何利用Python将彩色图像转为灰度图像,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!第一种方法Python的cv2库中自带彩色转灰度的方法,...
    99+
    2023-06-22
  • Python使用Pillow进行图像处理
    一、概述 PIL:Python Imaging Library,已经是Python平台事实上的图像处理标准库了。PIL功能非常强大,但API却非常简单易用。 由于PIL仅支持到Pyt...
    99+
    2024-04-02
  • Python如何使用cv2.canny进行图像边缘检测
    目录使用cv2.canny进行图像边缘检测阈值对检测结果的影响sobel算子对检测结果的影响范数对检测结果的影响总结使用cv2.canny进行图像边缘检测 CV2提供了提取图像边缘的...
    99+
    2023-01-28
    Python使用cv2.canny cv2.canny图像边缘检测 Python图像
  • python+opencv图像分割如何实现分割不规则ROI区域
    这篇文章将为大家详细讲解有关python+opencv图像分割如何实现分割不规则ROI区域,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。python有哪些常用库python常用的库:1.requesuts...
    99+
    2023-06-14
  • 怎么使用python进行图像绘制
    本文小编为大家详细介绍“怎么使用python进行图像绘制”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么使用python进行图像绘制”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。正文实际上前面我们就已经用到了...
    99+
    2023-07-02
  • 如何进行Python OpenCV图像模糊处理分析
    这篇文章跟大家分析一下“如何进行Python OpenCV图像模糊处理分析”。内容详细易懂,对“如何进行Python OpenCV图像模糊处理分析”感兴趣的朋友可以跟着小编的思路慢慢深入来阅读一下,希望阅读后能够对大家有...
    99+
    2023-06-26
  • 如何在Python中进行图像处理和识别
    如何在Python中进行图像处理和识别摘要:现代技术使得图像处理和识别在许多领域中成为了一个重要的工具。Python作为一种易于学习和使用的编程语言,具有丰富的图像处理和识别库。本文将介绍如何使用Python进行图像处理和识别,并提供具体的...
    99+
    2023-10-22
    图像处理 图像识别 Python编程
  • 使用ImageMagick进行图片缩放、合成与裁剪(js+python)
    最近的项目里面需要对书籍的封面进行处理,就是加一条阴影线形成书脊的凹凸感,然后将书脊切出,分成两部分,以便客户端实现打开动画。由于需要在服务器端处理,使用就研究使用imagemagi...
    99+
    2022-11-15
    ImageMagick 图片缩放 合成 裁剪
  • Python中Pillow库如何进行图像文件处理
    小编给大家分享一下Python中Pillow库如何进行图像文件处理,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!1、打开PyCharm,创建一个新的.py文件2、...
    99+
    2023-06-25
  • 如何利用VSTS跟Kubernetes整合进行CI/CD
    这篇文章主要讲解了“如何利用VSTS跟Kubernetes整合进行CI/CD”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“如何利用VSTS跟Kubernetes整合进行CI/CD”吧!为什么...
    99+
    2023-06-19
  • 利用Android如何实现对 ToolBar进行整合
    本篇文章给大家分享的是有关利用Android如何实现对 ToolBar进行整合,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。CustomeToolBar继承原生ToolBarp...
    99+
    2023-05-31
    android toolbar roi
  • python怎么使用tensorflow进行图像分类
    本文小编为大家详细介绍“python怎么使用tensorflow进行图像分类”,内容详细,步骤清晰,细节处理妥当,希望这篇“python怎么使用tensorflow进行图像分类”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习...
    99+
    2023-07-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作