|
6 ngày trước cách đây | |
---|---|---|
.. | ||
DigitalWatermarker.cs | 1 tháng trước cách đây | |
Masuit.Tools.DigtalWatermarker.csproj | 6 ngày trước cách đây | |
README.md | 1 tháng trước cách đây |
# Masuit.Tools.DigitalWatermarker
Masuit.Tools.DigitalWatermarker 是一个基于 OpenCV 的数字水印库,提供鲁棒的图像数字水印嵌入和提取功能。该库采用 DCT(离散余弦变换)和 QIM(量化索引调制)技术,可以在图像中嵌入不可见的数字水印,用于版权保护和内容追溯。
该库采用以下关键技术:
通过 NuGet 安装:
Install-Package Masuit.Tools.DigitalWatermarker
Install-Package OpenCvSharp4.runtime.win
或者使用 .NET CLI:
dotnet add package Masuit.Tools.DigitalWatermarker
dotnet add package OpenCvSharp4.runtime.win
using Masuit.Tools.DigtalWatermarker;
using OpenCvSharp;
// 从文件嵌入水印
Mat watermarkedImage = DigitalWatermarker.EmbedWatermark("source.jpg", "watermark.png");
Cv2.ImWrite("watermarked.jpg", watermarkedImage);
// 提取水印
Mat extractedWatermark = DigitalWatermarker.ExtractWatermark("watermarked.jpg");
Cv2.ImWrite("extracted_watermark.png", extractedWatermark);
using var source = Cv2.ImRead("source.jpg");
using var watermark = Cv2.ImRead("watermark.png");
// 嵌入水印
using var watermarked = DigitalWatermarker.EmbedWatermark(source, watermark);
Cv2.ImWrite("result.jpg", watermarked);
// 提取水印
using var extracted = DigitalWatermarker.ExtractWatermark(watermarked);
Cv2.ImWrite("extracted.png", extracted);
using var sourceStream = File.OpenRead("source.jpg");
using var watermarkStream = File.OpenRead("watermark.png");
// 嵌入水印
using var watermarked = DigitalWatermarker.EmbedWatermark(sourceStream, watermarkStream);
Cv2.ImWrite("result.jpg", watermarked);
// 从流提取水印
using var imageStream = File.OpenRead("watermarked.jpg");
using var extracted = DigitalWatermarker.ExtractWatermark(imageStream);
Cv2.ImWrite("extracted.png", extracted);
// 为摄影作品添加版权水印
var photographer = "© 2024 Photographer Name";
var logo = Cv2.ImRead("logo.png");
var photo = Cv2.ImRead("photo.jpg");
using var protected_photo = DigitalWatermarker.EmbedWatermark(photo, logo);
Cv2.ImWrite("protected_photo.jpg", protected_photo);
// 为媒体内容添加来源标识
var sourceId = GenerateSourceIdentifier(); // 生成唯一标识图像
var content = Cv2.ImRead("content.jpg");
using var traced_content = DigitalWatermarker.EmbedWatermark(content, sourceId);
// 发布traced_content...
// 后续验证来源
using var extracted_id = DigitalWatermarker.ExtractWatermark(traced_content);
bool isAuthentic = VerifySourceIdentifier(extracted_id);
本项目采用 MIT 许可证。详情请参见 LICENSE 文件。
欢迎提交 Issue 和 Pull Request!