转载地址http://blog.csdn.net/liu1guo2qiang3/article/details/39061445
硬件平台DM8148,软件版本CCS版本为5.4.0,测试函数VLIB的连通区域检测
1.存储图像数据至内存中
2.配置image的properties显示图像
过程:
开始搜到比较实用的文章:“CCS图像处理仿真程序,步骤详细”
原文网址:http://blog.163.com/lhf_alex/blog/static/1641091672010102810314785/
在这篇文章中主要参考了利用MATLAB提取图像数据的程序。我也参考过其他文章,不过不能直接应用,执行过程中有错误。
Matlab程序:Get_image.m
clear
clc
[RGB,map]=imread('.\zz.bmp'); %共有320*240=76800个点
H=RGB;
r=H(:,:,1);
g=H(:,:,2);
b=H(:,:,3);
[M,N]=size(r);
for i=1:M;
for j=1:N;
I(i,j)=0.2989*r(i,j)+0.5870*g(i,j)+0.1140*b(i,j);
end
end
I2=[r,g,b];
I1=double(I);
% imview(I1,map);
fid=fopen('.\bmp2.dat','wt'); %打开一个文件写入数据
% fid=fopen('f:\bmp2.dat','w');
n=0;
for i=1:240
for j=1:320
n=n+1;
fprintf(fid,'0x%x,\t',I1(i,j));
if rem(n,1)==0;
fprintf(fid,'\n');
end
end
end
fclose(fid);
该程序需要注意的是找的图片是要320*240像素的我载的是jpg格式的转成了bmp格式,jpg格式的我还没试过。
执行完Get_image.m程序会生成:bmp2.bat。该文件存储着76800个8-bits数据。即为320*240*3RGB信息
上为提取图片信息过程。
接下来要存储信息到内存之中。
依据bmp2.bat文件创建image.h与image.c文件用于加入工程
image.h:
#ifndef Image_h
#define Image_h
extern unsigned char image[];
#endif
image.c:
#include "image.h"
#pragma DATA_SECTION(image, "IMAGE_TEST"); //为了定位存储在IMAGE_TEST中,这里需要结合改写cmd完成
#pragma DATA_ALIGN(image, 8); //8位对齐
unsigned char image[] = {....数组中的数据就不列出来、毕竟有76800个呀!!...};//之前还因为拉了“;”报错呀!!找了好久有没有!!
cmd中的改写内容:
MEMORY
{
......此处引号为其他内容,与现在存储的内存无关
DDR2_7: o = 0x87000000 l = 0x01000000//这里是更具内存来配置的,不一定要一样。
}
SECTIONS
{
......同理
IMAGE_TEST> DDR2_7
}
以上cmd功能是“安排”把IMAGE_TEST段名的内容存储到首地址为:0x87000000的内存区域中;
上述内容为把RGB数据存储到0x87000000为首地址的内存区域。提醒:记得把image.h在你的工程中包含进去
接下来就可以bulid后进入Debug模式啦~~
进入后对image的配置如下图所示(240_360_propertie.png):
得到的最后图像如下图(240_360_picture.png):
以上为整个过程。
接下来要讲的更为直接可以利用save memory的功能把我的内存存储下来。
而只需load memory即可载入数据,通过配置image中properties即可显示图像。
同时image中properties我也导出了配置文件可以直接import 在image中右键可以看到。
上面我还为了得到matlab数据装了一个matlab。。。这多耗时呀!!
同为上面图片的RGB信息:
文件为:320_240.bin利用在debug中Tool->Load Memory
Load注意:Start Address:0x8000000
Type-size:32-bits
image的properties配置文件为:my_RGB.txt 载入刷新即