本文代码实现了简单的数字水印功能,即将一个掩模图像(二值图像)的信息隐藏在一个灰度图像的最低有效位上。

//====================================================================

// 作者 : quarryman

// 邮箱 : quarrying{at}qq.com

// 主页 : http://blog.csdn.net/quarryman

// 日期 : 2013年12月23日

// 描述 : 简单数字水印

//====================================================================

#include

#include

void kcvWatermarking(IplImage* img,IplImage* mask)

{

int w=img->width;

int h=img->height;

// 确保mask中只有黑白两种灰度值

cvThreshold(mask,mask,128,255,CV_THRESH_BINARY);

for(int i=0;i

{

for(int j=0;j

{

if(CV_IMAGE_ELEM(mask,uchar,i,j))

{

CV_IMAGE_ELEM(img,uchar,i,j)|=0x1;

}

else

{

CV_IMAGE_ELEM(img,uchar,i,j)&=0xfe;

}

}

}

}

void kcvGetWatermarking(IplImage* img,IplImage* dst)

{

int w=img->width;

int h=img->height;

for(int i=0;i

{

for(int j=0;j

{

if(CV_IMAGE_ELEM(img,uchar,i,j)&0x1)

{

CV_IMAGE_ELEM(dst,uchar,i,j)=0;

}

else

{

CV_IMAGE_ELEM(dst,uchar,i,j)=255;

}

}

}

}

int main( int argc, char** argv )

{

IplImage* img=cvLoadImage("lena.jpg",0);

IplImage* mask=cvCreateImage(cvGetSize(img),8,1);

IplImage* dst=cvCreateImage(cvGetSize(img),8,1);

cvSetZero(mask);

CvFont font=cvFont(2);

char text[]="minmin, i love you!";

cvPutText(mask,text,cvPoint(50,50),&font,CV_RGB(255,255,255));

cvNamedWindow("img");

cvNamedWindow("min");

cvShowImage("img",img);

cvShowImage("min",mask);

// 执行水印

kcvWatermarking(img,mask);

cvNamedWindow("comp");

cvShowImage("comp",img);

// 获得水印

kcvGetWatermarking(img,dst);

cvNamedWindow("watermarking");

cvShowImage("watermarking",dst);

cvWaitKey(0);

cvDestroyAllWindows();

cvReleaseImage(&img);

cvReleaseImage(&mask);

cvReleaseImage(&dst);

return 0;

}

php opencv 数字水印,OpenCV之简单数字水印相关推荐

  1. Opencv 图像拼接与融合简单方法Stitcher

    Opencv 图像拼接与融合简单方法Stitcher 官方示例 使用方法 运行效果 官方示例 #include "opencv2/imgcodecs.hpp" #include & ...

  2. Qt + Opencv 实现的一个简单文字识别的demo

    Qt + Opencv 实现的一个简单文字识别的demo 很久没用Qt了,这两天结合Opencv整了一个简单文字识别的demo,太久没用了,很多东西都忘记了,中间碰到了几个不大不小的坑,最后都解决了, ...

  3. python配置opencv最简单_Python版本OpenCV安装配置及简单实例

    原博文 2018-06-03 14:52 − # 2018-06-03 # 1. Python下载:https://www.python.org/downloads/ 选择对应平台对应版本的的Pyth ...

  4. vs2017python配置opencv_[opencv +VS2017] opencv、vs2017安装配置,环境搭建

    文章目录 [opencv] 3.4.1下载安装 一.前言 二.说明 三.下载opencv 3.1 获取链接 3.2 下载结果 四.安装opencv 五.配置opencv环境 六.vs2017 6.1下 ...

  5. 【OpenCV学习】 《OpenCV3编程入门》--毛星云 01 邂逅OpenCV(OpenCV基本概念与基本架构) ROS系统上的运用(python实现)

    对 <OpenCV3编程入门>第一章的学习笔记:理解什么是计算机视觉,什么是OpenCV,以及其中的联系等等. PS:此书为2014年出版,opencv的版本和接口也与现在有些不一致了,作 ...

  6. [opencv +VS2017] opencv、vs2017安装配置,环境搭建

    文章目录 [opencv] 3.4.1下载安装 一.前言 二.说明 三.下载opencv 3.1 获取链接 3.2 下载结果 四.安装opencv 五.配置opencv环境 六.vs2017 6.1下 ...

  7. 如何在ARM开发板上从源码编译安装OpenCV和OpenCV contrib

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 本文主要介绍如何在ARM开发板上从源码编译安装OpenCV和OpenCV contrib. OpenC ...

  8. CV之OpenCV:OpenCV库涉及概念、常见函数、常用案例、HALCON软件简介之详细攻略

    CV之OpenCV:OpenCV库涉及概念.常见函数.常用案例.HALCON软件简介之详细攻略 目录 CV入门 OpenCV使用过程 1.基本教程 OpenCV的相关概念 1.基本概念

  9. 【OpenCV】OpenCV介绍及C++环境配置

    文章目录 OpenCV介绍 Windows OpenCV环境配置 OpenCV介绍 OpenCV是一个跨平台计算机视觉和机器学习软件库,可以运行在Linux.Windows.Android和Mac O ...

最新文章

  1. 阎崇年:《袁崇焕传》自序
  2. windows server2012
  3. Hybrid框架UI重构之路:三、工欲善其事,必先利其器
  4. powershell命令大全
  5. android 线程锁Lock
  6. 基于openssl的https服务的配置
  7. atitit...触发器机制 ltrigger mechanism sumup .的总结O8f
  8. 网吧 电影系统 php,网吧电影服务器解决方案完全指南(一)
  9. 银行笔试题 java笔试题
  10. 计算机图形学实验体会,计算机图形学实验报告.doc
  11. 微信小程序 - 扫描小程序码进入小程序并获取参数
  12. 华为第十届 关灯计划
  13. ora-04098:触发器 无效且未通过重新验证问题解决之权限
  14. 微命令、微操作、微指令、微程序
  15. 1.6-程序员必须要会“英语”吗?(会英语在编程中的优势)
  16. RSI指标使用技巧和参数设置
  17. android 自定义文件夹图标,Launcher3 Android10.0修改文件夹图标为九宫格
  18. 考虑阶梯式碳交易机制与电制氢的综合能源系统热点优化
  19. Py之scikit-sos:scikit-sos的简介、安装、使用方法之详细攻略
  20. [附源码]计算机毕业设计JAVA保险业务管理系统

热门文章

  1. PAT练习 NewCoder数列
  2. 全局对象和全局静态、局部静态析构顺序
  3. 根据卫星电文计算GPS卫星位置
  4. CentOS中ZFS的安装及使用(存储池,文件系统,卷,克隆,快照)
  5. html单选框servlet,js、servlet分别获取下拉框、单选框、复选框的值
  6. 数据分析方法--漏斗分析
  7. Leetcode-How-What 力扣Leetcode刷题指南
  8. anaconda3 安装geopandas,以及依赖包shapely、gdal、pyproj、fiona
  9. 微信公众号开发-测试公众号账号及本地环境搭建(一)
  10. MVC设计模式与JavaWeb的三层架构