资源简介

此代码需要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\link.command.1.tlog

    .CA....      6220  2019-03-29 13:43  Arnold-cat\Arnold-cat\x64\Debug\Arnold-cat.tlog\link.read.1.tlog

    .CA....       708  2019-03-29 13:43  Arnold-cat\Arnold-cat\x64\Debug\Arnold-cat.tlog\link.write.1.tlog

    .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个文件信息

评论

共有 条评论