seamlessClone是OpenCV中新出现的函数,应该说如果能够基于较为准确的图像分割,能够得到很好的结果。
原始的前景,背景
三种flag下的融合结果
//注意头文件中添加
#include
<opencv2/photo.hpp>
int main(
int argc,
const
char
*
* argv )
{
Mat src
= imread(
"iloveyoupapa.png");
Mat dst
= imread(
"wood.png");
// Create an all white mask
Mat src_mask
=
255
* Mat
:
:ones(src.rows, src.cols, src.depth());
// The location of the center of the src in the dst
Point center(dst.cols
/
2,dst.rows
/
2);
// Seamlessly clone src into dst and put the results in output
Mat normal_clone;
Mat mixed_clone;
Mat monochrome_clone;
seamlessClone(src, dst, src_mask, center, normal_clone, NORMAL_CLONE);
seamlessClone(src, dst, src_mask, center, mixed_clone, MIXED_CLONE);
seamlessClone(src, dst, src_mask, center, monochrome_clone, MONOCHROME_TRANSFER);
imshow(
"normal_clone",normal_clone);
imshow(
"minxed_clone",mixed_clone);
imshow(
"monochrome_clone",monochrome_clone);
imshow(
"wood",dst);
imshow(
"lovepapa",src);
waitKey();
return
0;
}
当然选择这个例子有些讨巧的存在,因为前景为白底红色的文字,这个时候还是比较好进行区分的。同时我还做了一些其他图片的实验。
使用蝴蝶和星空来进行融合
目前方向:图像拼接融合、图像识别 联系方式:jsxyhelu@foxmail.com