无题

本文介绍了一个地图编辑对话框中实现的地图文件(.map)读写功能及加密过程。涉及文件选择对话框的使用、文件的二进制读写、简单加密解密算法的应用等关键技术点。

 void CMapEditDlg::OnButtonRead()
{
 // TODO: Add your control notification handler code here
 FILE *pFileout;  // 文件操作指针
 char caption[100] = "";
 char stype[100] = "";
 char texture[100] = "";
 char music[100] = "";
 int height = 0;
 int width = 0;
 int t = 0;
 CString str;
 // 以二进制方式打开user.dat文件
 CFileDialog dlg(TRUE,"*.map",NULL,OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,"Map Files (*.map)|*.map|",NULL);
 if (dlg.DoModal() == IDOK)
 {
  str = dlg.GetPathName();
 }
 else
 {
  return;
 }
 if ((pFileout = fopen(str, "rb")) == NULL)
 {
  printf("cannot open file");
  exit(0);
 }
 // 成块从文件中读取
 FILE *stream = tmpfile();//创建临时文件
 //解密文件
 char ch;

 ch=fgetc(pFileout);
 
 while(!feof(pFileout))
 {
  ch=ch^(0x100111);
  fputc(ch,stream);
  ch=fgetc(pFileout);
 }
 fclose(pFileout);
 rewind(stream);//移至文件头
 fread(&caption, 100, 1, stream);
 fread(&stype, 100, 1, stream);
 fread(&texture, 100, 1, stream);
 fread(&music, 100, 1, stream);
 fread(&height, sizeof(height), 1, stream);
 fread(&width, sizeof(width), 1, stream);
 int mymap[100];
 int n = 0;
 fread(&mymap, 300, 1, stream);
 _rmtmp();//删除临时文件

 //向页面写内容
 str = caption;
 m_cCaption = str;
 str = stype;
 m_cStype = str;
 str = texture;
    m_cTextTure = str;
 str = music;
    m_cMusic = str;
 
 m_nWidth = width;
 m_nHeight = height;
 CString strmapTemp = "";
 CString strmap = "";
 for (int i = 0; i < width; i++)
 {
  for (int j = 0; j < height; j++)
  {
   strmapTemp.Format("%d",mymap[n]);
   strmap += strmapTemp + ",";
   n++;
  }
 }
 m_cMap = strmap;
 UpdateData(FALSE);
 

}

void CMapEditDlg::OnButtonWrite()
{
 // TODO: Add your control notification handler code here
// 信息提交到user.dat中
 UpdateData(TRUE);
 if (""==m_cCaption)
 {
  MessageBox("Caption empty");
  return;
 }
    FILE  *pFilein;
 char caption[100];
 //获取叶面内容
 strcpy(caption,m_cCaption);
 
 char stype[100];
 strcpy(stype,m_cStype);
 char texture[100];
 strcpy(texture,m_cTextTure);
 char music[100];
 strcpy(music,m_cMusic);
 int height = m_nHeight;
 int width = m_nWidth;
 int t = 0;
 int mymap[100];


 for (int i = 0; i < width; i++)
 {
  for (int j = 0; j < height; j++)
  {
   mymap[t] = t;
   t++;
  }
 }
 CString str;
 str = "C://"+m_cCaption+".map";
    if ((pFilein = fopen(str, "ab+")) == NULL)
    {
      printf("cannot open file");
      exit(0);
    }
    FILE *stream = tmpfile();//创建临时文件
    fwrite(&caption, 100, 1, stream); // 将内容写入临时文件
 fwrite(&stype, 100, 1, stream);
 fwrite(&texture, 100, 1, stream);
 fwrite(&music, 100, 1, stream);
 fwrite(&height, sizeof(height), 1, stream);
 fwrite(&width, sizeof(width), 1, stream);
 fwrite(&mymap, 300, 1, stream);
 rewind(stream);//移至文件头
 //加密文件

 char ch;
 ch=fgetc(stream);
 
 while(!feof(stream))
 {
  ch=ch^(0x100111);
  fputc(ch,pFilein);
  ch=fgetc(stream);
 }
 _rmtmp();//删除临时文件
    fclose(pFilein);
 
}

 

加密码还可如下使用,其中感觉 密码也需要加密

 char ch;
 ch=fgetc(stream);
 CString s = _T("passwordfsdfasdfasdf");
 char *psw = s.GetBuffer(0);
 int j= i = 0;
 while(psw[++i]);
 while(!feof(stream))
 {
  ch=ch^psw[j>=i?j=0:j++];
  
  fputc(ch,pFilein);
  ch=fgetc(stream);
 }

OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉和机器学习软件库,广泛应用于图像处理、计算机视觉和模式识别等领域。物体识别是OpenCV的一个重要应用场景,以下是一些常见的物体识别方法和技术: 1. **特征提取与匹配**: - **SIFT(尺度不变特征变换)**和**SURF(加速稳健特征)**:这些算法用于检测和描述局部特征,能够在图像中识别出相同的物体,即使它们的大小、旋转或光照条件发生变化。 - **ORB(定向快速旋转BRIEF)**:一种快速的特征检测和描述算法,适用于实时应用。 2. **模板匹配**: - 通过在图像中滑动一个模板(已知物体的图像),并计算模板与图像区域的相似度,来找到物体的位置。 3. **机器学习与深度学习**: - **支持向量机(SVM)**:用于分类和回归分析,可以用于物体识别任务。 - **卷积神经网络(CNN)**:深度学习模型,特别适合处理图像数据,能够自动学习图像的特征并进行分类。 4. **目标检测算法**: - **Haar级联分类器**:基于积分图和AdaBoost算法,用于实时人脸检测。 - **YOLO(You Only Look Once)**和**SSD(Single Shot MultiBox Detector)**:实时目标检测算法,能够在单次前向传播中同时进行目标定位和分类。 5. **实例分割**: - **Mask R-CNN**:在目标检测的基础上,进一步分割出目标的精确轮廓。 OpenCV提供了丰富的API和工具,可以方便地实现上述方法。以下是一个简单的示例代码,展示如何使用OpenCV进行模板匹配: ```python import cv2 import numpy as np # 读取原始图像和模板图像 original_image = cv2.imread('original_image.jpg') template = cv2.imread('template.jpg') template_gray = cv2.cvtColor(template, cv2.COLOR_BGR2GRAY) w, h = template_gray.shape[::-1] # 转换为灰度图 gray_original = cv2.cvtColor(original_image, cv2.COLOR_BGR2GRAY) # 模板匹配 result = cv2.matchTemplate(gray_original, template_gray, cv2.TM_CCOEFF_NORMED) threshold = 0.8 loc = np.where(result >= threshold) # 绘制矩形框 for pt in zip(*loc[::-1]): cv2.rectangle(original_image, pt, (pt[0] + w, pt[1] + h), (0, 255, 255), 2) # 显示结果 cv2.imshow('Detected', original_image) cv2.waitKey(0) cv2.destroyAllWindows() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值