python OpenCV:seamlessClone泊松融合

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

一、seamlessClone函数的用法

翻译

https://www.learnopencv.com/seamless-cloning-using-opencv-python-cpp/

def seamlessClone(src, dst, mask, p, flags, blend=None): # real signature unknown; restored from __doc__
    """
    seamlessClone(src, dst, mask, p, flags[, blend]) -> blend
    .   @brief Image editing tasks concern either global changes (color/intensity corrections, filters,
    .   deformations) or local changes concerned to a selection. Here we are interested in achieving local
    .   changes, ones that are restricted to a region manually selected (ROI), in a seamless and effortless
    .   manner. The extent of the changes ranges from slight distortions to complete replacement by novel
    .   content @cite PM03 .
    .   
    .   @param src Input 8-bit 3-channel image.
    .   @param dst Input 8-bit 3-channel image.
    .   @param mask Input 8-bit 1 or 3-channel image.
    .   @param p Point in dst image where object is placed.
    .   @param blend Output image with the same size and type as dst.
    .   @param flags Cloning method that could be cv::NORMAL_CLONE, cv::MIXED_CLONE or cv::MONOCHROME_TRANSFER
    """
    pass


Python: cv.NORMAL_CLONE
将具有复杂轮廓的对象插入新背景,也就是说不保留dst 图像的texture细节,目标区域的梯度只由源图像决定。


Python: cv.MIXED_CLONE
基于宽松选择的混合无缝克隆,保留des图像的texture 细节。目标区域的梯度是由原图像和目的图像的组合计算出来(计算dominat gradient)。


Python: cv.MONOCHROME_TRANSFER
不保留src图像的颜色细节,只有src图像的质地,颜色和目标图像一样,可以用来进行皮肤质地填充

二、两张图像融合代码


import cv2
import numpy as np

# Read images : src image will be cloned into dst
im = cv2.imread("wolf_2.jpg")
obj= cv2.imread('wolf_1.jpg')

# Create an all white mask
mask = 255 * np.ones(obj.shape, obj.dtype)

# The location of the center of the src in the dst
width, height, channels = im.shape
center = (height/2, width/2)


# Seamlessly clone src into dst and put the results in output
normal_clone = cv2.seamlessClone(obj, im, mask, center, cv2.NORMAL_CLONE)
mixed_clone = cv2.seamlessClone(obj, im, mask, center, cv2.MIXED_CLONE)

# Write results
cv2.imwrite("opencv-normal-clone-example.jpg", normal_clone)
cv2.imwrite("opencv-mixed-clone-example.jpg", mixed_clone)

三、踩坑记录

错误1:

 normal_clone = cv2.seamlessClone(obj, im, mask, center, cv2.NORMAL_CLONE)
cv2.error: OpenCV(4.7.0) :-1: error: (-5:Bad argument) in function 'seamlessClone'

python OpenCV:seamlessClone泊松融合,opencv,人工智能,计算机视觉,深度学习,python

 error提示索引为1的参数类型错误,即center = (height/2, width/2)

通过打印发现center数据类型为float

改为center = (height//2, width//2)或者center = (int(height/2), int(width/2))

错误2:

 error: (-215:Assertion failed) 0 <= roi.x && 0 <= roi.width && roi.x + roi.width <= m.cols && 0 <= roi.y && 0 <= roi.height && roi.y + roi.height <= m.rows in function 'cv::Mat::Mat'


python OpenCV:seamlessClone泊松融合,opencv,人工智能,计算机视觉,深度学习,python

图像的obj区域超过了im图像的尺寸,即roi.x + roi.width > m.cols && roi.y + roi.height > m.rows

解决办法:

判断obj区域尺寸是否在im图像内,调换两张图的融合顺序或者缩放到合适的尺寸

四、修改后完整代码

# 注意修改路径!
import cv2
import numpy as np

# Read images : src image will be cloned into dst
im = cv2.imread("wolf_1.jpg")
obj= cv2.imread('wolf_2.jpg')

#进行图片尺寸变更,obj的尺寸小于im尺寸
obj=cv2.resize(obj,(obj.shape[0]//4,obj.shape[1]//4),interpolation=cv2.INTER_LINEAR)

# Create an all white mask
mask = 255 * np.ones(obj.shape, obj.dtype)

# The location of the center of the src in the dst

width, height, channels = im.shape

#小图融合位置
center = (height//2, width//2)


# Seamlessly clone src into dst and put the results in output
normal_clone = cv2.seamlessClone(obj, im, mask, center, cv2.NORMAL_CLONE)
mixed_clone = cv2.seamlessClone(obj, im, mask, center, cv2.MIXED_CLONE)

# Write results
cv2.imwrite("opencv-normal-clone-example.jpg", normal_clone)
cv2.imwrite("opencv-mixed-clone-example.jpg", mixed_clone)

五、图例  

python OpenCV:seamlessClone泊松融合,opencv,人工智能,计算机视觉,深度学习,python                                     python OpenCV:seamlessClone泊松融合,opencv,人工智能,计算机视觉,深度学习,python

               wolf_1.jpg                                                                           wolf_2.jpg

python OpenCV:seamlessClone泊松融合,opencv,人工智能,计算机视觉,深度学习,python                                   python OpenCV:seamlessClone泊松融合,opencv,人工智能,计算机视觉,深度学习,python

opencv-mixed-clone-example.jpg                                       opencv-normal-clone-example.jpg

参考地址:

Opencv python: seamlessClone泊松融合 (我把Lena变成了彼岸花怪/(ㄒoㄒ)/~~)_opencv-python cv.seamlessclone-CSDN博客

 图像泊松融合学习笔记_opencv 泊松融合-CSDN博客文章来源地址https://www.toymoban.com/news/detail-830722.html

到了这里,关于python OpenCV:seamlessClone泊松融合的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • ChatGPT4和python完美融合,快速完成数据分析与可视化、人工智能建模及论文高效撰写

    2022年11月30日,可能将成为一个改变人类历史的日子——美国人工智能开发机构OpenAI推出了聊天机器人ChatGPT3.5,将人工智能的发展推向了一个新的高度。2023年4月,更强版本的ChatGPT4.0上线,文本、语音、图像等多模态交互方式使其在各行各业的应用呈现了更多的可能性。202

    2024年02月03日
    浏览(72)
  • python的opencv操作记录(十)——图像融合

    最近碰到一个项目上的难题,是要从电动显微镜对焦的多张图像进行融合。因为,显微镜物镜的景深范围较小,可能在同一视野中有多个需要拍摄的物体位于不同的景深范围内,所以想通过图像的融合,将不同景深上的多张图像进行融合,从而把这些物体都在同一张图像中对

    2024年02月09日
    浏览(40)
  • 图像合成——OpenCV-Python图像融合详解

    图像合成——OpenCV-Python图像融合详解 在图像处理中,图像的合成是一项重要的任务。OpenCV提供了许多方法来实现图像合成。其中,cv::addWeighted()函数是一种常用的图像融合方法。它可以将两张图片以一定的权重相加,产生一张新的融合图像。 下面我们将详细讲解OpenCV中的c

    2024年02月14日
    浏览(51)
  • 使用Python基于opencv实现多视频画面拼接融合算法demo

    单个相机视频画面尺寸有限,在需要全景展示的场景下,就需要将多个相机视频进行拼接融合,得到一张全景图。本文基于opencv实现一个视频拼接的demo,熟悉视频拼接流程和opencv接口。 直接上代码吧,注释还是比较清楚的: 该demo使用ORB算法检测关键点,使用BFMatcher进行特征

    2024年02月04日
    浏览(53)
  • 人工智能市场:人工智能市场生态与行业融合

    作者:禅与计算机程序设计艺术 引言 1.1. 背景介绍 人工智能作为一项新兴技术,近年来在各个领域取得了显著的成果,如医疗、金融、教育、制造业等。这使得人工智能产业逐渐崛起,形成了一个庞大的市场。根据市场研究机构的统计数据,全球人工智能市场规模将从 201

    2024年02月07日
    浏览(60)
  • 人工智能与创新思维的融合

    人工智能(Artificial Intelligence, AI)是一门研究如何让计算机模拟人类智能的学科。创新思维(Innovative Thinking)是一种能够在新的情境中创造性地解决问题的思维方式。在过去的几年里,人工智能技术的发展非常迅猛,它已经成为许多行业的核心技术。然而,人工智能技术的发展仍

    2024年02月19日
    浏览(46)
  • 数据科学与人工智能的融合

    人工智能(Artificial Intelligence, AI)和数据科学(Data Science)是两个相互关联的领域,它们在过去几年中发展迅速,为我们的生活和工作带来了巨大的影响。人工智能主要关注于模拟和创造人类智能的机器,包括知识工程、机器学习、深度学习、自然语言处理、计算机视觉等领域。数

    2024年02月20日
    浏览(49)
  • 物联网和人工智能的融合

    1. 物联网和人工智能的融合 随着物联网和人工智能技术的快速发展,嵌入式系统将更多地与物联网设备和人工智能算法相结合。这种融合将带来更智能、更智能的嵌入式系统,能够实现更复杂的功能和应用。然而,这也带来了挑战,如如何处理大量的数据、确保系统的稳定性

    2024年02月22日
    浏览(46)
  • 人工智能技能的融合:实现强人工智能的高效解决方案

    人工智能(Artificial Intelligence, AI)是一门研究如何让计算机模拟人类智能的科学。人工智能的目标是让计算机能够理解自然语言、进行逻辑推理、学习自主决策、理解情感等。随着数据量的增加、计算能力的提升以及算法的创新,人工智能技术的发展取得了显著的进展。 强人工

    2024年02月21日
    浏览(76)
  • 微服务与人工智能技术的融合

    随着人工智能技术的快速发展,越来越多的企业开始关注微服务架构与人工智能技术的结合,以期在市场竞争中获得更大的优势。本文将深入探讨微服务架构与人工智能技术融合的优势、挑战,以及实现这一融合的最佳实践和方法。 首先,让我们了解一下微服务架构和人工智

    2024年02月03日
    浏览(41)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包