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);
    

      

  • 相关阅读:
    ffmpeg文档03-详细说明
    ffmpeg文档01-命令语法
    ffmpeg文档02-描述/概览
    OpenWrt使用花生壳脚本
    upc 9315 Philosopher’s Walk
    upc 9312 Game Map
    hdu 1251 统计难题
    Trie树简要讲解
    [算法]一次商品交易利益最大化
    [c语言]左移和右移
  • 原文地址:https://www.cnblogs.com/xion/p/6076608.html
Copyright © 2011-2022 走看看