资源简介
此代码需要VS实现完成opencv300的环境配置。下载了opencv3.00版后记得在属性管理器中添加现有的属性表。

代码片段和文件信息
// Arnold-cat.cpp : 定义控制台应用程序的入口点。
//
#include “stdafx.h“
#include
#include
#include
#include
using namespace std;
using namespace cv;
int iteration = 10; //变换次数//密钥
int mod(int number int mod)//求模运算,用于负数求模
{
return (number % mod + mod) % mod;
}
int _tmain(int argc _TCHAR* argv[])
{
/**********************加密****************************************************/
Mat img1 = imread(“lena.bmp“);//读取图像
if (img1.empty())//读取失败
{
cout << “读取图像失败“;
return -1;
}
imshow(“lena原始图片“ img1);//显示原始图像
Sleep(1000);//延迟1秒已保证加密图像的顺利保存
/************************************************************/
/***********************************************************/
IplImage *img2 = cvLoadImage(“lena.bmp“ 1);//加载原始图像以读取像素值
CvScalar s;
//typedef struct CvScalar{double val[4];} CvScalar;
//通常用的是前三个,val[0]val[1]val[2]的含义分别是图像的三个通道RGB通道:R是红色分量,G是绿色分量,B是蓝色分量。
cvNamedWindow(“lena加密图片“ 1);//创建一个新窗口用于显示图片
char temp_imageData[230000] = { 0 };//存放置乱的像素值
int x = 0 y = 0; //置乱的像素点坐标
int length = (img2->height > img2->width) ? img2->width : img2->height;//取宽和高的最小值,以防止越界
for (int t = 0; t < iteration; t++)//置乱次数
{
for (int i = 0; i < length; i++)//图片的高度
{
for (int j = 0; j < length; j++)//图片的宽度
/*注意Cat映射必须是正方形图片,否则没有逆变换,所以这里宽和高都取length*/
{
/**************************/
//此处添加额外代码实现图像的加密,即实现s的置乱
x = mod((i + j) length);
y = mod((i + 2 * j) length);
for (int k = 0; k < 3; k++)
{
temp_imageData[img2->widthStep*x + 3 * y + k] = img2->imageData[img2->widthStep*i + 3 * j + k];
}
/**************************/
}
}
for (int x = 0; x < length; x++)
{
for (int y = 0; y < length; y++)
{
for (int k = 0; k < 3; k++)
{
img2->imageData[img2->widthStep*x + 3 * y + k] = temp_imageData[img2->widthStep*x + 3 * y + k];
}
}
}
}
cvShowImage(“lena加密图片“ img2);//显示加密图像
cvSaveImage(“lena-encrypt.bmp“ img2);//保存加密图像到工程目录下
/************************************************************/
Sleep(1000);//延迟1秒已保证加密图像的顺利保存
/************************************************************/
cvNamedWindow(“lena解密图片“ 1);
char temp_imageData2[230000] = { 0 };
IplImage *img3 = cvLoadImage(“lena-encrypt.bmp“ 1);
for (int t = 0; t < iteration; t++)
{
for (int i = 0; i < length; i++)//高
{
for (int j = 0; j < length; j++)//宽
{
/**************************/
//此处添加额外代码实现像素点坐标的逆变换,即由(i,j)得到(x,y),并将像素点(i,j)的BGR像素值复制给临时数组temp_imageData中的坐标(x,y)
x = mod((2 * i - j) length);
y = mod((-i + j) length);
for (int k = 0; k < 3; k++)
{
temp_imageData2[img3->widthStep*x + 3 * y + k] = img3->imageData[img3->widthStep*i + 3 * j + k];
}
/**************************/
}
}
/**************************/
//此处添加额外代码将临时数组temp_imageData中的所有像素值复制到当前帧的imageData中,以完成一次逆变换
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
.CA.... 3848 2019-03-29 13:43 Arnold-cat\Arnold-cat\Arnold-cat.cpp
.CA.... 8217 2019-03-28 21:17 Arnold-cat\Arnold-cat\Arnold-cat.vcxproj
.CA.... 1317 2019-03-28 20:35 Arnold-cat\Arnold-cat\Arnold-cat.vcxproj.filters
.CA.... 715766 2018-05-29 20:43 Arnold-cat\Arnold-cat\baby.bmp
.CA.... 196662 2019-03-29 13:43 Arnold-cat\Arnold-cat\lena-discrypt.bmp
.CA.... 196662 2019-03-29 13:43 Arnold-cat\Arnold-cat\lena-encrypt.bmp
.CA.... 196662 2019-03-29 12:08 Arnold-cat\Arnold-cat\lena.bmp
.CA.... 79330 2019-03-29 12:08 Arnold-cat\Arnold-cat\lena.png
.CA.... 1531 2019-03-28 20:35 Arnold-cat\Arnold-cat\ReadMe.txt
.CA.... 216 2019-03-28 20:35 Arnold-cat\Arnold-cat\stdafx.cpp
.CA.... 234 2019-03-28 20:35 Arnold-cat\Arnold-cat\stdafx.h
.CA.... 236 2019-03-28 20:35 Arnold-cat\Arnold-cat\targetver.h
.CA.... 668 2019-03-29 12:31 Arnold-cat\Arnold-cat\x64\Debug\Arnold-cat.Build.CppClean.log
.CA.... 2096 2019-03-29 13:43 Arnold-cat\Arnold-cat\x64\Debug\Arnold-cat.log
.CA.... 266077 2019-03-29 13:43 Arnold-cat\Arnold-cat\x64\Debug\Arnold-cat.obj
.CA.... 1638400 2019-03-29 12:32 Arnold-cat\Arnold-cat\x64\Debug\Arnold-cat.pch
.CA.... 184 2019-03-29 13:43 Arnold-cat\Arnold-cat\x64\Debug\Arnold-cat.tlog\Arnold-cat.lastbuildstate
.CA.... 1538 2019-03-29 13:43 Arnold-cat\Arnold-cat\x64\Debug\Arnold-cat.tlog\cl.command.1.tlog
.CA.... 29174 2019-03-29 13:43 Arnold-cat\Arnold-cat\x64\Debug\Arnold-cat.tlog\CL.read.1.tlog
.CA.... 1314 2019-03-29 13:43 Arnold-cat\Arnold-cat\x64\Debug\Arnold-cat.tlog\CL.write.1.tlog
.CA.... 2482 2019-03-29 13:43 Arnold-cat\Arnold-cat\x64\Debug\Arnold-cat.tlog\li
.CA.... 6220 2019-03-29 13:43 Arnold-cat\Arnold-cat\x64\Debug\Arnold-cat.tlog\li
.CA.... 708 2019-03-29 13:43 Arnold-cat\Arnold-cat\x64\Debug\Arnold-cat.tlog\li
.CA.... 10450 2019-03-29 12:32 Arnold-cat\Arnold-cat\x64\Debug\stdafx.obj
.CA.... 871424 2019-03-29 13:43 Arnold-cat\Arnold-cat\x64\Debug\vc120.idb
.CA.... 815104 2019-03-29 13:43 Arnold-cat\Arnold-cat\x64\Debug\vc120.pdb
.CA.... 38993920 2019-04-02 20:45 Arnold-cat\Arnold-cat.sdf
.CA.... 1330 2019-03-28 21:17 Arnold-cat\Arnold-cat.sln
.CA..H. 26112 2019-04-02 20:45 Arnold-cat\Arnold-cat.v12.suo
.CA.... 3014656 2019-04-02 19:56 Arnold-cat\ipch\arnold-cat-488df716\arnold-cat-1664980f.ipch
............此处省略15个文件信息
- 上一篇:基于logistics映射的图像加密-VS
- 下一篇:uvm user guide
相关资源
- vspd7.2.308.zip
- CVSNT 完整覆盖版防TortoiseCVS中文乱码
- VisualStudioUninstaller vs卸载工具
- vSphere6.06.56.7通用版注册机
- ado数据库MFC图书管理系统vs2010
- vs2005骑士巡游问题-分治法C
-
解决安装vs2012后vs2010 li
nk : fatal er - VMware vSphere 的 Intel 82579LM网卡驱动 最
- VisualSVN-VS2019V7.0解除时间限制
- librdkafka win7 64位 vs2015编译Release版本
- VS1053B编解码器的VDR分布式声音采集卡
- VS六种配色方案(工具-导入和导出设
- VS2012OpenGL配置所需要的全部libdllh文件
- 串口模拟器支持win10
- Visual Assist X for vs2005
- VisualSVN-VS2019-7.1.2破解版
- Visual_Assist_X VS2008专用
- Kvsc3.exe、Kvsc3.dll病毒查杀清除方法
- VisualSVN 6.0.4 破解版(支持VS2017)
- CVSNT中文完美稳定版
- AnkhSvn-2.6.12735 支持VS2010-VS2015 官方原版
- Visual Studio 2017企业版 Enterprise,专业版
- VS2017_Professional_15.5.7+密钥
- VS2010、VS2012、VS2013代码自动注释插件
- ArangoDB vs. JanusGraph vs. Neo4j vs. OrientDB
- 插件式GIS应用框架的设计与实现&mda
- 通过x264录制RGB屏幕视频vs2013工程,
- Microsoft Visual Studio 2017 Installer Project
- VSuite Ramdisk Server V4.6.7 真正破解版(修
- VSP波场分离的径向中值滤波方法
评论
共有 条评论