zoukankan      html  css  js  c++  java
  • CCS内存数据转成图片

      在嵌入式DSP图像处理开发过程中,经常需要将DSP内存中的图像数据保存下来,作为数据集。CCS5.4或者CCS3.3都只支持保存内存原始数据而不支持将内存数据直接存储为一张图片,为了能将CCS保存的.dat内存格式数据转化成能用看图软件直接打开的图像文件,本文提供一段基于OpenCV的转换程序,只需简单修改数据集的路径及图片名即可输出.jpg格式图片文件。 ccs内存保存数据格式要求:设置为32位十六进制C语言类型,选择图像的起始地址与图像所占的字节 VS下的转换程序如下:

    #include "opencv2/opencv.hpp"
    #include <iostream>
    #include <fstream>
    
    #define NOTEWIDTH     864//定义图像的宽度
    #define NOTEHEIGHT    2000//定义图像的高度
    using namespace cv;
    using namespace std;
    
    Mat image(NOTEHEIGHT,NOTEWIDTH,CV_8UC1);
    void main()
    {
        char fileName[100];
        char saveFileName[100];
    
        int i = 0;
        uint data = 0;
    
        for(int index=1;index<=36;index++)
        {
             printf("process %d:
    ",index);
             //原始图像路径及文件名
             sprintf(fileName,"F:\CCS\EURO_20161101\%02d.dat",index);
             ifstream infile(fileName);
             string temp;
             int j = 0,k = 0;
             i=0;
             while(getline(infile,temp))
             {
                 if(i>=1)
                 {
                     sscanf(temp.c_str(),"%x",&data);//以十六进制方式读取一行
                     //将读取的十六进制数通过指针操作放入图像矩阵中
                     image.at<uchar>(j,k) = *((uchar*)&data);
                     image.at<uchar>(j,k+1) = *((uchar*)&data+1);
                     image.at<uchar>(j,k+2) = *((uchar*)&data+2);
                     image.at<uchar>(j,k+3) = *((uchar*)&data+3);
    
                     k+=4;
                     if(k>=NOTEWIDTH)
                     {
                          k = 0;
                          j++;
                          if(j>=NOTEHEIGHT)
                              j = NOTEHEIGHT-1;
                     }
                 }
                 i++;
             }
             imshow("Image",image);
             infile.close();
             sprintf(saveFileName,"%02d.jpg",index);
             imwrite(saveFileName,image);
        }
        waitKey();
    }

       这样在工程目录下可以得到转换后的.jpg格式图像,当然如果要保存其他格式文件,如.bmp,只需修改imwrite传入参数的文件名,将其改成 

    sprintf(saveFileName,"%02d.bmp",index);
    

      

  • 相关阅读:
    LeetCode 242. Valid Anagram (验证变位词)
    LeetCode 205. Isomorphic Strings (同构字符串)
    LeetCode 204. Count Primes (质数的个数)
    LeetCode 202. Happy Number (快乐数字)
    LeetCode 170. Two Sum III
    LeetCode 136. Single Number (落单的数)
    LeetCode 697. Degree of an Array (数组的度)
    LeetCode 695. Max Area of Island (岛的最大区域)
    Spark中的键值对操作
    各种排序算法总结
  • 原文地址:https://www.cnblogs.com/xion/p/6076608.html
Copyright © 2011-2022 走看看