图像处理金典问题,C++实现,附源码,顶贴就给分!!!!

时间:2021-05-13 21:30:19
最近在研究一个图片去半透明水印的问题,看了网上的一个叫xiaotie牛人的批量去水印的博文,自己试着写了一个这样的程序,发现水印是去掉了,但是图片中目标的边界变得像棉絮一样模糊,我用的是OpenCV里的inpaint函数,通过实验发现可能是它的半径参数造成的,半径越大,去水印的效果越好,但边界越模糊。如何解决这个问题呢?请大牛给个详细思路,新手水平有限,辛苦各位了!
源码:
#include "stdafx.h"
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"

#include <iostream>

using namespace cv;
using namespace std;

Mat img, inpaintMask;
Point prevPt(-1,-1);


int _tmain(int argc, _TCHAR* argv[])
{
   /*IplImage* pimg = cvLoadImage( "fruits.jpg" );
        Mat img0( pimg,1); */
    const char* filename ="fruits.jpg";
const char* wmbk ="watermark.jpg";
    Mat img0 = imread(filename,-1);
    
if(img0.empty())
    {
        cout << "Couldn't open the image "<<filename<<"and"<<inpaintMask << "!!!!!!!!!!!!!! Usage: inpaint <image_name>\n" << endl;
        return 0;
    }

    help();
    
    namedWindow( "image", 1 );
    imshow("image",img0);
    img = img0.clone();
   /* inpaintMask = Mat::zeros(img.size(), CV_8U);*/
    Mat inpaintMask = imread(wmbk,-1);

    Mat inpainted =cvCreateMat(img0.rows, img0.cols, CV_8UC1);

    inpaint(img, inpaintMask, inpainted, 3, CV_INPAINT_TELEA);//inpaintMask是我用ps提取的水印蒙版
    imshow("inpainted image", inpainted);
   
    return 0;
}

34 个解决方案

#1


只能顶了。

#2


jf升星星 图像处理金典问题,C++实现,附源码,顶贴就给分!!!!

#3


太专业了,帮顶。

#4


OPENCV都么听过啊...顶下,话说要是CCAV还可能了解点.. 图像处理金典问题,C++实现,附源码,顶贴就给分!!!!

#5


mark!

#6


帮顶了~

#7


学习一下啊

#8


那就顶了。。。

#9


顶一下

#10


帮顶~

#11


MARK

#12


学习一下啊

#13


帮顶一下

#14



       不懂啊

#15


图像处理新手,只能绑定了~~

#16


谁知道inpaint的算法原理,也可以在这里给大家讲解一下,谢了!!!!

#17


真的?

#18


是真的,技术讨论,希望共同进步!

#19


顶一个吧,等大神来啊。。。

#20


没接触过数字水印。

#21


ding

#22


不懂,帮顶

#23


希望大牛出现啊!!!!

#24


帮顶,学习

#25


mark~·

#26


只有顶起啦!!

#27


Opencv的大牛啊,你就现身吧!

#28


这个必须得顶!!!

#29


只能接分了  

#30


谢谢各位,没有大牛,咱自己就要努力成为大牛。问题解决了,产生上述问题的原因即是算法差值时周围点有其他值存在,只要你将mask做成单通道的,就可以解决改问题了!

#31


顶一下

#32


用过一段时间OPENCV做视频监控,对图像的处理算法没有过多研究,爱莫能助啊,抱歉啦

#33


顶楼主了!

#34


该回复于2011-11-24 09:56:54被版主删除

#1


只能顶了。

#2


jf升星星 图像处理金典问题,C++实现,附源码,顶贴就给分!!!!

#3


太专业了,帮顶。

#4


OPENCV都么听过啊...顶下,话说要是CCAV还可能了解点.. 图像处理金典问题,C++实现,附源码,顶贴就给分!!!!

#5


mark!

#6


帮顶了~

#7


学习一下啊

#8


那就顶了。。。

#9


顶一下

#10


帮顶~

#11


MARK

#12


学习一下啊

#13


帮顶一下

#14



       不懂啊

#15


图像处理新手,只能绑定了~~

#16


谁知道inpaint的算法原理,也可以在这里给大家讲解一下,谢了!!!!

#17


真的?

#18


是真的,技术讨论,希望共同进步!

#19


顶一个吧,等大神来啊。。。

#20


没接触过数字水印。

#21


ding

#22


不懂,帮顶

#23


希望大牛出现啊!!!!

#24


帮顶,学习

#25


mark~·

#26


只有顶起啦!!

#27


Opencv的大牛啊,你就现身吧!

#28


这个必须得顶!!!

#29


只能接分了  

#30


谢谢各位,没有大牛,咱自己就要努力成为大牛。问题解决了,产生上述问题的原因即是算法差值时周围点有其他值存在,只要你将mask做成单通道的,就可以解决改问题了!

#31


顶一下

#32


用过一段时间OPENCV做视频监控,对图像的处理算法没有过多研究,爱莫能助啊,抱歉啦

#33


顶楼主了!

#34


该回复于2011-11-24 09:56:54被版主删除