您的位置 首页 模拟

vivado中的IP调用 vivado HLS的帧差图画完成

vivado中的IP调用 vivado HLS的帧差图像实现-由目标运动引起的运动变化区域包括运动目标在前后两帧中的共同位置(图中黑色区域)、在当前帧中新显露出的背景区域和新覆盖的背景区域三部分。

1.帧差法原理
帧差法的完结十分简略:
 

vivado中的IP调用 vivado HLS的帧差图画完结

如图可见,由方针运动引起的运动改变区域包含运动方针在前后两帧中的一起方位(图中黑色区域)、在当时帧中新显露出的布景区域和新掩盖的布景区域三部分。
数学原理:

2.vivado HLS完结

Vivado HSL是xilinx公司推出的高层次归纳东西,运用C/C++就能完结传统的verilog言语进行的开发,降低了开发难度,内置的hls视频库完结了根本的opencv函数,直接调用能够完结转化。
(1)翻开HLS如下图

vivado中的IP调用 vivado HLS的帧差图画完结

(2)创立新工程

vivado中的IP调用 vivado HLS的帧差图画完结

(3)一向点击next,呈现下图

vivado中的IP调用 vivado HLS的帧差图画完结

(4)挑选FPGA芯片类型 我的是7020-2

vivado中的IP调用 vivado HLS的帧差图画完结

(5)挑选完结后如下图

vivado中的IP调用 vivado HLS的帧差图画完结

(6)点击finish后,如下图

vivado中的IP调用 vivado HLS的帧差图画完结

(7)右键source 挑选new file 输入文件名 top.cpp

#include “top.h”

#include “hls_math.h”

void hls_counter_color1(AXI_STREAM_IN& INPUT_STREAM1,

AXI_STREAM_IN& INPUT_STREAM2, AXI_STREAM_OUT& OUTPUT_STREAM, int rows,

int cols) {

#pragma HLS INTERFACE axis port=INPUT_STREAM1

#pragma HLS INTERFACE axis port=INPUT_STREAM2

#pragma HLS INTERFACE axis port=OUTPUT_STREAM

#pragma HLS RESOURCE core=AXI_SLAVE variable=rows metadata=“-bus_bundle CONTROL_BUS”

#pragma HLS RESOURCE core=AXI_SLAVE variable=cols metadata=“-bus_bundle CONTROL_BUS”

#pragma HLS RESOURCE core=AXI_SLAVE variable=return metadata=“-bus_bundle CONTROL_BUS”

#pragma HLS INTERFACE ap_stable port=rows

#pragma HLS INTERFACE ap_stable port=cols

RGB_IMAGE img_01(rows, cols);

RGB_IMAGE img_02(rows, cols);

GRAY_IMAGE img_1(rows, cols);

GRAY_IMAGE img_2(rows, cols);

GRAY_IMAGE img_4(rows, cols);

GRAY_IMAGE img_5(rows, cols);

RGB_IMAGE img_3(rows, cols);

#pragma HLS dataflow

hls::AXIvideo2Mat(INPUT_STREAM1, img_01);

hls::AXIvideo2Mat(INPUT_STREAM2, img_02);

hls::CvtColor(img_01, img_1);

hls::CvtColor(img_02, img_2);

hls::AbsDiff(img_1,img_2,img_4);

hls::Mat2AXIvideo(img_4, OUTPUT_STREAM);

}

(8)持续右键source 挑选new file 输入 top.h

#ifndef _TOP_H_

#define _TOP_H_

#include “hls_video.h”

//#include “ap_int.h”

//#include

#define MAX_WIDTH 2048

#define MAX_HEIGHT 1536

#define INPUT_IMAGE1 “a1.jpg”

#define INPUT_IMAGE2 “a2.jpg”

//#define INPUT_IMAGE “test_1080p.bmp”

#define OUTPUT_IMAGE “result_1080p.jpg”

#define OUTPUT_IMAGE_GOLDEN “result_1080p_golden.bmp”

// typedef video library core structures

typedef hls::stream 》 AXI_STREAM_IN;

typedef hls::stream 》 AXI_STREAM_OUT;

typedef hls::Mat RGB_IMAGE;

typedef hls::Mat GRAY_IMAGE;

//顶层归纳函数

void hls_counter_color1(AXI_STREAM_IN& src_axi1,AXI_STREAM_IN& src_axi2, AXI_STREAM_OUT& dst_axi, int rows, int cols);

#endif

(9)点击Test Bench 右键 new file 输入文件名 test.cpp

#include “top.h”

#include “hls_opencv.h”

#include “iostream”

using namespace std;

using namespace cv;

const int N = 2;

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

for (int i = 0; i 《 N》//获取图画数据

IplImage* src1 = cvLoadImage(INPUT_IMAGE1);

IplImage* src2 = cvLoadImage(INPUT_IMAGE2);

IplImage* dst1 = cvCreateImage(cvGetSize(src1), 8,1);

AXI_STREAM_IN src_axi1;

AXI_STREAM_IN src_axi2;

AXI_STREAM_OUT dst_axi;

IplImage2AXIvideo(src1, src_axi1);

IplImage2AXIvideo(src2, src_axi2);

hls_counter_color1(src_axi1, src_axi2, dst_axi, src1-》height,

src1-》width);

AXIvideo2IplImage(dst_axi, dst1);

cvSaveImage(OUTPUT_IMAGE, dst1);

//开释内存

cvReleaseImage (&src1);

cvReleaseImage (&src2);

cvReleaseImage (&dst1);

}

}

(10)点击Test Bench 右键 add file 增加两幅运动图画,文件名与top.h中的

#define INPUT_IMAGE1 “a1.jpg”

#define INPUT_IMAGE2 “a2.jpg”

相同

(11)增加顶层文件

vivado中的IP调用 vivado HLS的帧差图画完结

右键工程 Project SetTIngs –Synthesis

vivado中的IP调用 vivado HLS的帧差图画完结

vivado中的IP调用 vivado HLS的帧差图画完结

如上图 点击OK

(12)SoluTIon

挑选AcTIve SoluTIon 等候完结 如下图

vivado中的IP调用 vivado HLS的帧差图画完结

(13)C Simulation

vivado中的IP调用 vivado HLS的帧差图画完结

点击ok 等候完结

(14)检查生成图片

工程文件中 solution1文件夹下csim下build

vivado中的IP调用 vivado HLS的帧差图画完结

vivado中的IP调用 vivado HLS的帧差图画完结

生成图画如上图

工程完结

(15)生成IP文件 点击如图按钮

vivado中的IP调用 vivado HLS的帧差图画完结

点击OK 完结IP的生成

vivado中的IP调用 vivado HLS的帧差图画完结

vivado中的IP调用 vivado HLS的帧差图画完结

生成的IP

然后就能够在vivado中调用IP了。

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/zhishi/moni/336600.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部