CEVA-DSP算法移植--2

一、回顾

       上一篇博客里提到了CEVA-ADK,经过和ceva厂家沟通,发现ceva-tool-box开发软件其实是CEVA-ADK。厂家提供了ceva-cv文档,但不是很详细,只描述了各种库及里面的函数。提到的实时操作系统(RTOS)其实是一个工程,里面有各种库。新建工程,通过包含头文件的形式去调用库里面的函数。下面以 Image Library 的Histogram为例。

二、建立工程

新建一个C++工程,编译工具链选CEVA-XM4 Toolchain。

CEVA-DSP算法移植--2_第1张图片

 

本例子是在resize的例程基础上进行修改的。所以将图中的文件复制过来。

CEVA-DSP算法移植--2_第2张图片

三、添加工程的头文件路径

在工程名上点右键,选“Properties”。“C/C++ Build”下面的Settings里面。

CEVA-DSP算法移植--2_第3张图片

添加Image_lib.lib,如果你调用的函数不在这里面,那你需要添加其他的库文件。

CEVA-DSP算法移植--2_第4张图片

四、main.c包含头文件

 主程序如下:

/******************************************************************************\
 * Name        : main.cpp
 * Author      : Your name
 * Copyright   : Your copyright notice
 * Description : Hello World in C++
\******************************************************************************/
#include 
#include "image_lib.h"
#include "iplimage.h"
#include "util_resize.h"
#include "cevaxm.h"

using namespace cevacv;

uint8_t g_usInterBlk0[0x20000] __attribute__ ((section (".DSECT XM4_INT_MEM_BLK0")));
uint8_t g_usInterBlk1[0x20000] __attribute__ ((section (".DSECT XM4_INT_MEM_BLK1")));
unsigned short array[4100], array1[4100];
unsigned int array2[256];

int main(void)
{
	IPL_IMG *p_img_in, *p_img_out;

	p_img_in = Ipl_LoadImgFromBmp("input.bmp");//直方图
	p_img_out = Ipl_CreateImg(400, 300, 1);
	Util_ResizeIplInterp(p_img_in, p_img_out, NULL);
	Ipl_SaveImgToBmp(p_img_out, "resize.bmp");

	uint8_t* p_u8Src	=p_img_out->imageData;
	int32_t height     = p_img_out->height;
	int32_t width      = p_img_out->width;
	uint32_t step       = ROUND_UP_16(width);

	cevacv::histogram(p_u8Src, array, array1, step, height, width);
	cevacv::sum_histogram2(array, array1, array2);

	Ipl_ReleaseImg(&p_img_in);
	Ipl_ReleaseImg(&p_img_out);

	return 0;
}

五、lsf复制

     由于开发时间不长,对工程里面的lsf理解不深。lsf文件是类似于ccs里面的cmd文件,分配内存空间的文件。因为复制了resize工程里面的文件和引用了程序,所以要把resize工程里的lsf文件内容复制到新建工程lsf文件,替换掉。input.bmp图片也要复制过来。编译完工程,debug,在右上方有个Expressions窗口添加数组变量名,就能看到里面的数了。

CEVA-DSP算法移植--2_第5张图片

 

CEVA-DSP算法移植--2_第6张图片

histogram函数将图像的结果存放在两个存储区域,array和array1数组。sum_histogram函数是对前两个存储区域的值进行求和,最终得到了输出图像的直方图。找了半天,发现cevabox不能以图片的形式查看地址。以上就是一个简单的直方图例程。

你可能感兴趣的:(CEVA-DSP算法移植)