c++ opencv读取图片像素值并进行加密

来源:互联网 发布:成都软件测试工资 编辑:程序博客网 时间:2024/06/06 20:35

使用opencv 获取图片像素值 并分别对RGB值进行八位01串的加解密

环境:visual studio、opencv(需要安装)

#include <iostream>#include <opencv2/core/core.hpp>#include <opencv2/highgui/highgui.hpp>using namespace std;//#define key 0xa9int key[8]={0,1,0,0,0,0,1,0};using namespace cv;int main(int argc, char* argv[]){    IplImage *img = cvLoadImage("00.jpg",1);//cvSaveImage("test111.jpg",img);    CvScalar s;cvNamedWindow("Image",1);cvShowImage("Image",img);int flag=1;    for(int ii = 0;ii < img->height;ii++){        for(int jj = 0;jj < img->width;jj++){   s = cvGet2D(img,ii,jj); // get the (i,j) pixel value   int col[3][8];   memset(col,0,sizeof(col));   for(int i=0;i<3;i++)   {   int num=0;   if(flag)   cout<<"像素值:  "<<(int)s.val[i]<<endl;   while(((int)s.val[i]))   {   col[i][7-num]=((int)s.val[i])%2;   //if(flag) cout<<"模的值: "<<col[i][7-num]<<endl;   s.val[i]=s.val[i]/2.0;   //if(flag) cout<<"s.val[i]  "<<(int)s.val[i]<<endl;   num++;   }   for(int j=0;j<8;j++)   {  if(flag)cout<<col[i][j];  col[i][j]=col[i][j]^key[j];   }   if(flag)cout<<endl;   int sum=0;   int x=1;   for(int j=0;j<8;j++)   {   if(flag)   cout<<col[i][7-j];   sum+=col[i][7-j]*x;   x*=2;   }   if(flag)   cout<<"\nsum   "<<sum<<endl;   s.val[i]=sum;      }   flag=0;   cvSet2D(img,ii,jj,s);//set the (i,j) pixel value           }    }    //cvShowImage("Image",img);cvSaveImage("01.jpg",img);    cvWaitKey(0); //等待按键     cvDestroyWindow( "Image" );//销毁窗口  //cvReleaseImage( &img ); //释放图像//system("pause");    return 0;}



   

0 0
原创粉丝点击