对OpenCV中seamlessClone的初步实验

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;
}
当然选择这个例子有些讨巧的存在,因为前景为白底红色的文字,这个时候还是比较好进行区分的。同时我还做了一些其他图片的实验。
使用蝴蝶和星空来进行融合





posted @ 2017-06-11 15:20 jsxyhelu 阅读(...) 评论(...) 编辑 收藏