OpenCV 4.11.0
开源计算机视觉库
加载中…
搜索中…
无匹配项
无缝克隆

详细描述

有用链接

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

枚举

枚举  cv::SeamlessCloneFlags {
  cv::NORMAL_CLONE = 1 ,
  cv::MIXED_CLONE = 2 ,
  cv::MONOCHROME_TRANSFER = 3 ,
  cv::NORMAL_CLONE_WIDE = 9 ,
  cv::MIXED_CLONE_WIDE = 10 ,
  cv::MONOCHROME_TRANSFER_WIDE = 11
}
 无缝克隆算法的标志。更多…
 

函数

void cv::colorChange (InputArray src, InputArray mask, OutputArray dst, float red_mul=1.0f, float green_mul=1.0f, float blue_mul=1.0f)
 给定一张原始彩色图像,可以将这张图像的两个不同颜色的版本无缝混合。
 
void cv::illuminationChange (InputArray src, InputArray mask, OutputArray dst, float alpha=0.2f, float beta=0.4f)
 通过对选择区域内的梯度场应用适当的非线性变换,然后使用泊松求解器进行反向积分,可以局部修改图像的表观光照。
 
void cv::seamlessClone (InputArray src, InputArray dst, InputArray mask, Point p, OutputArray blend, int flags)
 执行无缝克隆,将源图像中的区域混合到目标图像中。此函数专为局部图像编辑而设计,允许轻松且无缝地应用仅限于区域(手动选择为 ROI)的更改。这些更改的范围可以从轻微的变形到用新内容完全替换[215]
 
void cv::textureFlattening (InputArray src, InputArray mask, OutputArray dst, float low_threshold=30, float high_threshold=45, int kernel_size=3)
 通过仅保留边缘位置的梯度,然后与泊松求解器集成,可以淡化所选区域的纹理,使其内容呈现平坦的外观。这里使用 Canny 边缘检测器。
 

枚举类型文档

◆ SeamlessCloneFlags

#include <opencv2/photo.hpp>

无缝克隆算法的标志。

枚举器
NORMAL_CLONE 
Python: cv.NORMAL_CLONE

普通无缝克隆。此方法非常适合将具有复杂轮廓的对象插入新背景中。它保留了插入对象的原始外观和光照,确保自然融合。

MIXED_CLONE 
Python: cv.MIXED_CLONE

混合无缝克隆。此方法用于解决基于简单颜色选择或 alpha 遮罩耗时且可能导致不希望的光晕的情况。通过结合源结构和目标纹理,混合无缝克隆非常有效,即使选择比较松散也是如此。

MONOCHROME_TRANSFER 
Python: cv.MONOCHROME_TRANSFER

单色转移克隆。此方法允许用户用替代特征替换对象的特定特征,例如灰度纹理或图案。它尤其适用于艺术效果或目标对象修改。

NORMAL_CLONE_WIDE 
Python: cv.NORMAL_CLONE_WIDE

增强的普通无缝克隆。类似于NORMAL_CLONE,但采用了一种高级的 ROI(感兴趣区域)计算方法。此模式通过考虑整个掩码区域而不是仅考虑非零像素的边界矩形来处理更大的源区域。

MIXED_CLONE_WIDE 
Python: cv.MIXED_CLONE_WIDE

增强的混合无缝克隆。类似于MIXED_CLONE,但采用了一种高级的 ROI(感兴趣区域)计算方法。此模式通过考虑整个掩码区域而不是仅考虑非零像素的边界矩形来处理更大的源区域。

MONOCHROME_TRANSFER_WIDE 
Python: cv.MONOCHROME_TRANSFER_WIDE

增强的单色转移克隆。类似于MONOCHROME_TRANSFER,但采用了一种高级的 ROI(感兴趣区域)计算方法。此模式通过考虑整个掩码区域而不是仅考虑非零像素的边界矩形来处理更大的源区域。

函数文档

◆ colorChange()

void cv::colorChange ( InputArray src,
InputArray mask,
OutputArray dst,
float red_mul = 1.0f,
float green_mul = 1.0f,
float blue_mul = 1.0f )
Python
cv.colorChange(src, mask[, dst[, red_mul[, green_mul[, blue_mul]]]]) -> dst

#include <opencv2/photo.hpp>

给定一张原始彩色图像,可以将这张图像的两个不同颜色的版本无缝混合。

参数
src输入 8 位 3 通道图像。
mask输入 8 位 1 或 3 通道图像。
dst与 src 大小和类型相同的输出图像。
red_mulR 通道乘法因子。
green_mulG 通道乘法因子。
blue_mulB 通道乘法因子。

乘法因子在 0.5 到 2.5 之间。

◆ illuminationChange()

void cv::illuminationChange ( InputArray src,
InputArray mask,
OutputArray dst,
float alpha = 0.2f,
float beta = 0.4f )
Python
cv.illuminationChange(src, mask[, dst[, alpha[, beta]]]) -> dst

#include <opencv2/photo.hpp>

通过对选择区域内的梯度场应用适当的非线性变换,然后使用泊松求解器进行反向积分,可以局部修改图像的表观光照。

参数
src输入 8 位 3 通道图像。
mask输入 8 位 1 或 3 通道图像。
dst与 src 大小和类型相同的输出图像。
alpha值范围在 0-2 之间。
beta值范围在 0-2 之间。

这有助于突出显示曝光不足的前景对象或减少镜面反射。

◆ seamlessClone()

void cv::seamlessClone ( InputArray src,
InputArray dst,
InputArray mask,
Point p,
OutputArray blend,
int flags )
Python
cv.seamlessClone(src, dst, mask, p, flags[, blend]) -> blend

#include <opencv2/photo.hpp>

执行无缝克隆,将源图像中的区域混合到目标图像中。此函数专为局部图像编辑而设计,允许轻松且无缝地应用仅限于区域(手动选择为 ROI)的更改。这些更改的范围可以从轻微的变形到用新内容完全替换[215]

参数
src源图像 (8 位 3 通道),从中将混合一个区域到目标图像中。
dst目标图像 (8 位 3 通道),将把 src 图像混合到其中。
mask一个二进制掩码(8位,1、3或4通道),指定源图像中要混合的区域。非零像素表示要混合的区域。如果提供空Mat,则内部会创建一个所有像素均为非零值的掩码。
psrc图像中心在dst图像中放置的点。
blend存储无缝克隆结果的输出图像。它与dst具有相同的大小和类型。
标志控制克隆方法类型的标志,可以取cv::SeamlessCloneFlags的值。

◆ textureFlattening()

void cv::textureFlattening ( InputArray src,
InputArray mask,
OutputArray dst,
float low_threshold = 30,
float high_threshold = 45,
int kernel_size = 3 )
Python
cv.textureFlattening(src, mask[, dst[, low_threshold[, high_threshold[, kernel_size]]]]) -> dst

#include <opencv2/photo.hpp>

通过仅保留边缘位置的梯度,然后与泊松求解器集成,可以淡化所选区域的纹理,使其内容呈现平坦的外观。这里使用 Canny 边缘检测器。

参数
src输入 8 位 3 通道图像。
mask输入 8 位 1 或 3 通道图像。
dst与 src 大小和类型相同的输出图像。
low_threshold范围从0到100。
high_threshold值 > 100。
kernel_size要使用的Sobel核的大小。
注意
该算法假设源图像的颜色接近于目标图像的颜色。这意味着当颜色不匹配时,源图像颜色会偏向于目标图像的颜色。