资源简介
此代码需要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
相关资源
- 基于logistics映射的图像加密-VS
- Apress Visual C Sharp 2010 Recipes A Problem S
- cvsnt-2.5.03.2260.msi 和TortoiseCVS-1.8.26
- openblas vs2013 x64 库dll和lib
- nginx1.9.9 vs2015 完整项目
- VS2010 TCP一个进程拥有多个端口,cli
- vs2010编译的g2o库文件 win 7可用 直接解
- 基于混沌映射的彩色图像加密算法分
- openCVSharp Unity3d
- 电信cisco NAV10-WF-ADVSEC 真正的刷机软件
- miracl_5.5.4_包含vs工程
- APM3.2.1固件-VS2012工程
- pvsyst6中文使用手册
- 中维世纪JVS-N71-G1网络摄像机固件
- Openvswtich实验教程
- GBVS显著性检测包含经典IT算法
- VSC-HVDC PSCAD的仿真模型
- bigtiff4.1源代码与编译好的静态库
- YML保存 cvCompareHist cvCalcEMD2 直方图对比
- live555通过VS2013编译,自己整理的,附
- 摄像头CT跟踪算法
- OPENGL三维场景搭建、漫游、交互_vs2
- 完整的打印机监控源码
- AWVS11.x激活工具&汉化包
- Redgate .NET Reflector 10.1.1.1137 破解版 V
- Visual Assist X 2237+破解补丁+汉化包+菜单
- qt vs 2015 tools
- BabeLua For 2019 V3.2.2.0.zip
- VSI_bundle.rar
- VS2015+Opencv310的X86动态库lib
评论
共有 条评论