VS下使用openCV给一副图加倾斜的文字水印

VS下使用openCV给一副图加倾斜的文字水印,第1张

可以在新图像里面,水平放置你要的文字

然后旋转这幅图像

再用旋转过的文字图像,与原图像叠加

旋转可这样做

先计算旋转矩阵

CvMat* Rot_Mat = cvCreateMat(2,3,CV_32FC1)

cv2DRotationMatrix(center,angle,scale,Rot_Mat)

然后旋转变换

cvTransform(src,dst,Rot_Mat,0)

采用两个二值图像作为水印嵌入数据,对视频水印进行预处理3.1 3水印嵌入和检测方案,本文采用二维阿诺德变换。二维阿诺德变换定义为:,(x,y)是原始图像的像素,(x,y)是一个新的像素图像变换,n图像是图像的大小的顺序,并且更一般为正方形图像。由于阿诺德变换的周期性,我们可以使用周期周期变换图像。即在水印嵌入过程中,水印置乱的次数可以作为关键时刻,然后嵌入水印。当水印被提取,水印可以继续(周期倍)。这是利用阿诺德变换进行修复方案。阿诺德转换的数量由版权所有者保存。

乱具有以下优点:水印是

(1)通过置乱的合法可以自由控制算法选择、参数选择和随机数技术,使非法用户很难理解图像的内容,可以提高水印信息的安全性;

(2)分配扰码技术可以分散点误差,提高水印的视觉效果,从而提高其鲁棒性。在3 3.2视频水印中嵌入水印算法的关键在于以下三点:(1)水印结构;(2)水印嵌入区域;(三)嵌入技术;选取两个二值图像作为水印。为了提高水印的鲁棒性,大多数DCT域水印算法将水印嵌入到DCT系数的低频部分。但低频区域是图像的能量集中,嵌入到低频会降低透明度。虽然嵌入在高频段虽然透明度好,但对于大多数图像处理的高频分量有很大的影响,从而降低水印的鲁棒性。因此,水印算法的水印信号大部分嵌入在中频DCT系数的载体图像,以达到最佳的透明度和鲁棒性之间的权衡。各种嵌入技术的最终目的是提高水印的鲁棒性和透明性。为了提高水印的鲁棒性以及满足人类视觉的限制,必须基于HVS的嵌入位置。本文将HVS分为运动灵敏度、纹理灵敏度和亮度敏感度。在下面的嵌入过程中,这些功能得到充分利用。图3-1显示中间分支。嵌入过程如图3-1所示。图3-1水印嵌入过程读取视频中的亮度分量Y,因为它是最有效的数据,根据NEC算法,嵌入其中的水印具有最强的鲁棒性。根据公式(3-2),给出了运动灵敏度阈值的计算公式,发现32帧对Yi(I = 1,2)更敏感,…32)。

(3-2)

(T代表当前帧的数量)

接下来的Y32数据按照64×64的尺寸裁成20 byij(j = 1,2),…20),我们可以得到20块的三维数据块BYk(k = 1,2,64×64×32),…20,如图2-3所示。图3-2

亮度块根据

式(3-3),(3-4)显示的亮度敏感性LK和DK的公式,通过计算纹理的敏感性,我们选择来计算一块20块数据的值都比较高的()作为水印嵌入块。

(3-3)

(3-4),这是在BYk的亮度数据,。最后,考虑到该算法的复杂性和性能,我们对所选择的块实现了2阶DCT变换。根据NEC算法的思想,为了抵抗滤波和压缩攻击,我们将争先恐后地将水印序列嵌入到第一帧DCT系数C(u,v)中,见公式(3-5)。在4的数据中,c(u,v)是DCT变换系数的第一帧,C(u,v)是水印嵌入系数,S是非负整数(并满足T1 = S \\ \\,T2 = 3 * T1)。在完成嵌入后,用C(u,v)实现抗2维DCT变换,将水印嵌入到视频数据中,再将它们放回原来的位置。重要的是要注意,在嵌入过程中使用的所有参数都应保留为密钥。具体程序如下:第一步:总共有32帧视频Y组件数据:<(1)读t

VideoCapture和cvCapture其实是一样的,你可以去看看源码,VideoCapture其实在内部调用了cvCapture。这是不同版本的opencv导致的。我接触到的opencv有过一次大升级,函数名有很多变化,其实是向着面向对象的方向发展了,也就是开始重c++而轻c了。

cvLoadImage和imread返回值略有差异,过去的opencv处理图像倾向使用IplImage类型。升级后更倾向于将图像、矩阵等等都统一使用Mat类型上。差别不大。

你看头文件也能发现imread位于highgui.hpp里面是c++,cvLoadImage位于highgui_c.h里,是c。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11609293.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-17
下一篇 2023-05-17

发表评论

登录后才能评论

评论列表(0条)

保存