gpt4 book ai didi

image - 如何删除水印的边缘?

转载 作者:行者123 更新时间:2023-12-02 17:29:17 24 4
gpt4 key购买 nike

我有一张这样的 src 图片(源图片太大无法上传):
that

我有一个像这样的白色背景标志:
enter image description here

我尝试使用 OpenCV 代码:

    std::string file_name = "E:\\xxx\\IMG_0001.JPG";
cv::Mat image = cv::imread(file_name);
cv::Mat mask_not;
cv::Mat mask = cv::imread("E:\\xxx\\white_eva.jpg",0);
cv::Mat logo = cv::imread("E:\\xxx\\white_eva.jpg");
cv::bitwise_not(mask,mask_not);
cv::cvtColor(mask_not,mask_not,cv::COLOR_GRAY2BGR);
std::cout<<mask_not.type()<<std::endl;
cv::Mat imageROI;
imageROI = image(cv::Rect(image.cols-logo.cols-10,image.rows-logo.rows-10,logo.cols,logo.rows));
cv::imwrite("E:\\xxx\\imageROI.jpg",imageROI);
logo.copyTo(imageROI,mask_not);
cv::imwrite("E:\\xxx\\test.JPG",image);

结果是这样的:
enter image description here

正如您从结果图片中看到的那样, Logo 周围有一个白色边缘。起初,我认为原因是面具没有大到足以掩盖所有标志。但正如您所见, Logo 的边缘似乎完全显示出来。所以,这让我很困惑。第一个问题是,水印的白边怎么抹掉?

最佳答案

我尝试在您的蒙版图像上添加形态学操作。所以这就是我能达到的。

    std::string file_name = "./image1.jpg";
cv::Mat image = cv::imread(file_name);
cv::Mat mask_not;
cv::Mat mask = cv::imread("./eva.jpg",0);
cv::Mat logo = cv::imread("./eva.jpg");

// MORPHOLOGY OPS HERE
cv::Mat element = cv::getStructuringElement(cv::MORPH_RECT,
Size(5, 5),
Point(-1, -1));

for (int i = 0; i < 20; ++i) {
cv::morphologyEx( mask, mask, cv::MORPH_CLOSE, element );
cv::morphologyEx( mask, mask, cv::MORPH_CLOSE, element );
cv::morphologyEx( mask, mask, cv::MORPH_CLOSE, element );
cv::medianBlur(mask, mask, 5);
}

cv::Mat element_dilate = cv::getStructuringElement(cv::MORPH_RECT,
Size(5, 5),
Point(-1, -1));
cv::dilate(mask, mask, element_dilate);


cv::bitwise_not(mask,mask_not);

cv::imshow("win", mask_not);
cv::waitKey(0);

cv::cvtColor(mask_not,mask_not,cv::COLOR_GRAY2BGR);
std::cout<<mask_not.type()<<std::endl;
cv::Mat imageROI;
imageROI = image(cv::Rect(image.cols-logo.cols-10,image.rows-logo.rows-10,logo.cols,logo.rows));
cv::imwrite("./imageROI.jpg",imageROI);
logo.copyTo(imageROI,mask_not);
cv::imwrite("./test.JPG",image);

结果图像(我稍微调整了图像大小,因此您可能需要在形态学操作中更改内核大小):
enter image description here

关于image - 如何删除水印的边缘?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56866202/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com