Opencv学习笔记 - 频域手段添加盲水印
2023-09-14 09:01:35 时间
频域添加数字水印的方法,是指通过某种变换手段(傅里叶变换,离散余弦变换,小波变换等)将图像变换到频域(小波域),在频域对图像添加水印,再通过逆变换,将图像转换为空间域。相对于空域手段,频域手段隐匿性更强,抗攻击性更高。
代码使用OpenCvSharp / c#实现
添加水印:
// 读取图像并获取b通道
string filename = @"C:\Users\xiaomao\Desktop\123.png";
Mat origin = Cv2.ImRead(filename, ImreadModes.Color);
Mat[] arr = origin.Split();
Mat image = arr[0];
// 将输入图像扩大到最佳尺寸
Mat padded = new Mat();
int m = Cv2.GetOptimalDFTSize(image.Rows);
int n = Cv2.GetOptimalDFTSize(image.Cols);
Cv2.CopyMakeBorder(image, padded, 0, m - image.Rows, 0, n - image.Cols, BorderTypes.Constant, Scalar.All(0));
Mat temp = new Mat();
padded.ConvertTo(temp, MatType.CV_32F);
Mat[] planes = new Mat[] { temp, Mat.Zeros(padded.Size(), MatType.CV_32F) };
Mat complexImage = new Mat();
// 吧一个zeros通道和扩展通道合并在一起
Cv2.Merge(planes, complexImage);
// 进行傅里叶变换
Cv2.Dft(com
相关文章
- Opencv Cookbook阅读笔记(四):用直方图统计像素
- OpenCV每日函数 几何图像变换模块 (5) getRotationMatrix2D函数
- Opencv学习笔记 透视变换/单应性变换
- Opencv学习笔记 OpenCv4.5.0 + VS2019 创建c++测试项目
- Opencv学习笔记 使用LineIterator遍历两点直线上的所有点
- Opencv学习笔记 - 基于图的分割
- Opencv学习笔记 背景对比、帧差进行移动物体检测
- Opencv学习笔记 - 使用OpenCV,scikit-image和Python检测低对比度图像
- Opencv学习笔记 图像分割三(ImageJ 分水岭)
- Opencv学习笔记 K-Means聚类算法
- Opencv学习笔记 常用函数、基础知识四
- 机器学习笔记 - 基于CNN+OpenCV的图像着色
- 机器学习笔记 基于tensorflow2.0的手写数字识别,并导出pb模型供OpenCV的C++版本的DNN模块调用
- Opencv学习笔记 - OpenCV 4机器学习算法简介
- Opencv学习笔记(六)SURF学习笔记
- Opencv学习笔记(六)SURF学习笔记
- OpenCV(C++接口)学习笔记1-图像读取、显示、保存