テキスト検出に基づいて画像の透かしを除去する簡単な透かし除去関数を作成しました。効果は次のとおりです。
プラグイン関数のコード リファレンスは次のとおりです。
using namespace cv::dnn;
TextDetectionModel_DB *textDetector=0;
void getTextDetector()
{
if(textDetector)return;
String modelPath = "text_detection_DB_TD500_resnet18_2021sep.onnx"; //模型权重文件
textDetector=new TextDetectionModel_DB(modelPath);
float binThresh = 0.3; //二值图的置信度阈值
float polyThresh = 0.5 ; //文本多边形阈值
double unclipRatio = 2.0; //检测到的文本区域的未压缩比率,gai比率确定输出大小
uint maxCandidates = 200;
textDetector->setBinaryThreshold(binThresh)
.setPolygonThreshold(polyThresh)
.setUnclipRatio(unclipRatio)
.setMaxCandidates(maxCandidates);
double scale = 1.0 / 255.0;
int height = 736; //输出图片长宽
int width = 736;
Size inputSize = Size(width, height);
Scalar mean = Scalar(122.67891434, 116.66876762, 104.00698793);
textDetector->setInputParams(scale, inputSize, mean);
}
void deWaterMarkTextDetection(Mat &input,Mat &output,Mat &src,string)
{
getTextDetector();
// 推理
std::vector<std::vector<Point>> results;
textDetector->detect(input, results);
Mat mask = Mat::zeros(input.size(), CV_8U);
fillPoly(mask, results,Scalar::all(255));
//将掩模进行膨胀,使其能够覆盖图像更大区域
Mat kernel = getStructuringElement(MORPH_RECT, Size(5, 5));
dilate(mask, mask, kernel);
//使用inpaint进行图像修复
Mat result;
inpaint(src, mask, output, 1, INPAINT_NS);
}
「QTプラグイン画像アルゴリズム研究プラットフォーム」のその他のコンテンツ:
OpenCV 画像ピラミッド ---- ガウスとラプラシアン
OpenCV は Photoshop の曲線を模倣して画像の明るさと色を調整します
QT プラグイン画像アルゴリズム ソフトウェア アーキテクチャ
OpenCV イメージのダーク チャネルの調整とかすみの除去
opencv は、選択された領域内の指定された hsv カラーの透かしを抽出します
Opencv は透かしを削除する画像領域を手動で選択します
Opencv はテキスト検出に基づいて画像の透かしを削除します
QTプラグイン画像アルゴリズム研究プラットフォーム
Opencv 画像の明るさを調整するいくつかの方法
Opencv で QT スレッドを使用する場合の注意点
友達とのコミュニケーションを歓迎します。WeChat/QQ: 23245175、友達を追加してください。プラグイン ソフトウェアに注意してください。