使用Vivado HLS在ZYNQ-7000上开发OPENCV的教程

2019-01-28 11:31:40 来源:网络
标签:

 

1. 背景知识

OPENCV(Open Source Computer Vision)被广泛的使用在计算机视觉开发上。使用Vivado HLS视频库在zynq-7000全可编程soc上加速OPENCV 应用的开发,将大大提升我们的计算机视觉开发。

 

图1和图2展示了如何使用opencv加速zynq-7000全可编程 soc的计算机视觉开发。

 

1> 使用Vivado HLS开发opencv的计算机视觉IP;

 

2> 将IP添加到SOC系统中

 

3> 验证和下板实验

 

本次重点为HLS的图像读入显示,视频读入显示,以及摄像头的读入显示。

 

2. HLS 使用到的函数

 

enum

{

/* 8bit,color or not */

CV_LOAD_IMAGE_UNCHANGED =-1,//读取图像的原通道数

/* 8bit,gray */

CV_LOAD_IMAGE_GRAYSCALE =0,//读取灰度图片

/* ?,color */

CV_LOAD_IMAGE_COLOR =1,//读取彩色图片

/* anydepth, ? */

CV_LOAD_IMAGE_ANYDEPTH =2,//任意深度

/* ?,any color */

CV_LOAD_IMAGE_ANYCOLOR =4//任意颜色

};

/* loadimage from file

iscolor can be a combination of aboveflags where CV_LOAD_IMAGE_UNCHANGED

overrides the other flags

using CV_LOAD_IMAGE_ANYCOLOR alone isequivalent to CV_LOAD_IMAGE_UNCHANGED

unless CV_LOAD_IMAGE_ANYDEPTH is specifiedimages are converted to 8bit

*/

CVAPI(IplImage*) cvLoadImage(constchar*filename, int iscolor CV_DEFAULT(CV_LOAD_IMAGE_COLOR));

 

Filename 文件名

 

Iscolor 图像的颜色和深度

 

使用方法:

IplImage*src = cvLoadImage(filename,CV_LOAD_IMAGE_GRAYSCALE);

 

其他函数可以采用点击右键 open declaraTIon查看。

 

Test.cpp 源码:

 

#include"Test.h"

#include"hls_opencv.h"

usingnamespace cv;

int main (int argc, char**argv) {

/*

//方法1 cvLoadImage函数加载图片

IplImage* src =cvLoadImage(INPUT_IMAGE,CV_LOAD_IMAGE_GRAYSCALE);

IplImage* dst =cvCreateImage(cvGetSize(src), src->depth, src->nChannels);//获取原始图像大小

AXI_STREAM src_axi, dst_axi;

IplImage2AXIvideo(src, src_axi);

AXIvideo2IplImage(src_axi, dst);

cvSaveImage(OUTPUT_IMAGE, dst);

cvShowImage( "result_1080p",dst);

cvReleaseImage(&src);

cvWaitKey();

*/

/*

//方法2 cvLoadImage函数加载图片

Mat src_rgb = imread(INPUT_IMAGE,CV_LOAD_IMAGE_COLOR);//加载图片并灰度显示

IplImage src = src_rgb;

cvSaveImage(OUTPUT_IMAGE, &src);

cvShowImage("src",&src);

waitKey(0);

return 0;

*/

/*

//读取视频文件

IplImage *frame;

CvCapture *capture =cvCaptureFromAVI("1.avi");//获取视频数据

cvNamedWindow("AVI player",0);

while(true)

{

if(cvGrabFrame(capture))

{

frame = cvRetrieveFrame(capture);

cvShowImage("AVI player",frame);

if(cvWaitKey(10)>=0) break;

}

else

{

break;

}

}

cvReleaseCapture(&capture);

cvDestroyWindow("AVI player");

return 0;

*/

//摄像头操作

IplImage *frame;

CvCapture *capture = cvCaptureFromCAM(1);//捕获摄像头数据0--笔记本自带摄像头 1--外部摄像头

cvNamedWindow("AVIplayer",0);

while(true)

{

if(cvGrabFrame(capture))

{

frame = cvRetrieveFrame(capture);

cvShowImage("AVIplayer",frame);

if(cvWaitKey(10)>=0)break;

}

else

{

break;//没有采集到视频数据退出

}

}

cvReleaseCapture(&capture);

cvDestroyWindow("AVIplayer");

return 0;

}

Test.h源码:

#ifndef_TOP_H_

#define_TOP_H_

#include"hls_video.h"

//maximum image size

#defineMAX_WIDTH 1920

#defineMAX_HEIGHT 1080

// I/OImage SetTIngs

#defineINPUT_IMAGE "test_1080p.jpg"

#defineOUTPUT_IMAGE "result_1080p.bmp"

#defineOUTPUT_IMAGE_GOLDEN "result_1080p_golden.bmp"

//typedef video library core structures

typedef hls::stream> AXI_STREAM;

typedef hls::Scalar<3, unsignedchar> RGB_PIXEL;

typedef hls::Mat RGB_IMAGE;

#endif

 

3. VIVADO HLS图像获取实验

对于工程的创建请参考《HLS入门一》

实验原图1

 

//方法1cvLoadImage函数加载图片

IplImage* src = cvLoadImage(INPUT_IMAGE,CV_LOAD_IMAGE_GRAYSCALE);

实验结果1

 

//读取视频文件

IplImage *frame;

CvCapture *capture = cvCaptureFromAVI("1.avi");//获取视频数据

cvNamedWindow("AVIplayer",0);

 
关注与非网微信 ( ee-focus )
限量版产业观察、行业动态、技术大餐每日推荐
享受快时代的精品慢阅读
 

 

继续阅读
以色列计算机科学领域蓬勃发展,有望成为中美之后第三大?
以色列计算机科学领域蓬勃发展,有望成为中美之后第三大?

90年代后期,随着外来人才的大量涌入,以色列的计算机科学领域开始蓬勃发展。如今,在军方团队不断培养相关精英人才的影响下,以色列成为计算机视觉领域的领军者,甚至有望成为中美之后的第三大AI超级体。

CVPR 2019成华人庆典,包揽最佳论文和最佳学生论文奖

刚刚,CVPR 2019 颁发了今年的所有奖项。来自 CMU 的辛书冕等人获得了最佳论文奖,而最佳学生论文奖被 UCSB 王鑫等人获得。李飞飞、李佳等人因 ImageNet 的贡献获得最具影响力论文奖。

新思科技与Kudan携手加速智能计算机视觉处理芯片开发

新思科技(Synopsys, Inc.,纳斯达克股票代码:SNPS)和领先的同步定位与建图(SLAM)软件算法授权商Kudan近日宣布达成合作,共同针对新思科技DesignWare® ARC® EV6x嵌入式视觉处理器IP来优化KudanSLAM计算机软件算法

CEEC科技Corner第四期开讲:《3D计算机视觉技术发展与应用》

5月18日,由中国国际消费电子展示交易中心(CEEC)联合投石智库打造的CEEC科技Corner继续开讲,一众科技爱好者齐聚深圳CEEC(中国国际消费电子展示交易中心),一起聆听中科院深圳先进技术研究院宋展博士带来的主题分享 --《3D计算机视觉技术发展与应用》。

苹果泰坦团队申请先进夜间传感器系统专利 功率为传统汽车前照灯的三倍

据外媒报道,美国专利商标局(US Patent & Trademark Office)公布了苹果(Apple)公司的一项专利申请,该专利与其泰坦项目(Project Titan)有关,确切的说,是一种多模态传感系统,可在自动驾驶车辆夜间行驶时,用于检测和识别物体。

更多资讯
用FPGA实现FIR滤波器IP仿真
用FPGA实现FIR滤波器IP仿真

FIR(Finite Impulse Response)滤波器,即有限脉冲响应滤波器,又称为非递归型滤波器,是数字信号处理系统中最基本的元件,它可以在保证任意幅频特性的同时具有严格的线性相频特性,同时其单位抽样响应是有限长的,因而滤波器是稳定的系统。

FPGA 国产化进程加速,安路科技能否迎来爆发?

FPGA是在PAL、GAL、CPLD等可编程器件的基础上进一步发展的产物,它由输入/输出块、可配置逻辑块和可编程互联三部分组成,同一片FPGA,不同的编程数据,可以产生不同的电路功能,因此FPGA的使用非常灵活。

FPGA建立时间和保持时间你必须知道的
FPGA建立时间和保持时间你必须知道的

时钟是FPGA设计中最重要的信号,FPGA系统内大部分器件的动作都是在时钟的上升沿或者下降沿进行。无论是在输入,输出或是寄存器与寄存器之间,只要设计到时钟上升沿或者下降沿的采样,就会提到建立时间(setup TIme) 和保持时间(hold TIme) 。

Microchip推出全新低功耗FPGA视频和图像处理解决方案, 助力客户加速智能嵌入式视觉设计

随着基于视觉的计算密集型系统在网络边缘的集成度越来越高,现场可编程门阵列(FPGA)正迅速成为下一代设计的首选灵活平台。

基于FPGA的图像直方图实时显示
基于FPGA的图像直方图实时显示

上电初始,FPGA需要通过IIC接口对CMOS Sensor进行寄存器初始化配置。这些初始化的基本参数,即初始化地址对应的初始化数据都存储在一个预先配置好的FPGA片内ROM中。