HLS OPENCV各函数使用方法

本文记录下opencv中主要的函数在hls、opencv中的书写格式。(书写时,顺便注意下大小写)

目录

1、首先贴出使用代码以供参考。后面列出各个函数的用法和部分介绍

2、cvtcolor,以及图像类型定义不当导致的问题。

3、GaussianBlur

4、dilate膨胀、erode腐蚀

5、threshold

6、filter2d

7、EqualizeHist直方图均衡化(特别注意!!单独调用一次会失败)

1、首先贴出GAUSSIANBLUR的使用案例以供参考。(只涉及了数据结构与端口的优化方法,关于for等其他的具体优化方法见后续文章)

top.cpp

#include "top.h"

void hls_gaussianblur(AXI_STREAM& INPUT_STREAM, AXI_STREAM& OUTPUT_STREAM, int rows, int cols)
{
	/*
#pragma HLS INTERFACE axis port=INPUT_STREAM
#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_0(rows, cols);
	//RGB_IMAGE img_1(rows, cols);
	RGB_IMAGE img_0;
	RGB_IMAGE img_1;

	RGB_PIXEL pix(10, 10, 10);

#pragma HLS dataflow
	hls::AXIvideo2Mat(INPUT_STREAM, img_0);
	hls::GaussianBlur<3,3>(img_0, img_1);

	hls::Mat2AXIvideo(img_1, OUTPUT_STREAM);
}


top.h

#ifndef _TOP_H_
#define _TOP_H_

#include "hls_video.h"

// maximum image size
#define MAX_WIDTH  512
#define MAX_HEIGHT 512

// I/O Image Settings
#define INPUT_IMAGE           "lena.jpg"
#define OUTPUT_IMAGE          "result.jpg"

// typedef video library core structures
typedef hls::stream<ap_axiu<32, 1, 1, 1> >               AXI_STREAM;
typedef hls::Scalar<3, unsigned char>                 RGB_PIXEL;
typedef hls::Mat<MAX_HEIGHT, MAX_WIDTH, HLS_8UC3>     RGB_IMAGE;

// top level function for HW synthesis

void hls_gaussianblur(AXI_STREAM& INPUT_STREAM, AXI_STREAM& OUTPUT_STREAM, int rows, int cols);

#endif

opencv_top.cpp

#include "opencv_top.h"
#include "top.h"

void opencv_image_guassianblur(cv::Mat src, cv::Mat dst)
{
    cv::GaussianBlur(src, dst, cv::Size(3, 3), 0);
}

opencv_top.h

#ifndef ___OPENCV_TOP_H___
#define ___OPENCV_TOP_H___

#include "hls_opencv.h"

void opencv_image_guassianblur(cv::Mat src, cv::Mat dst);

#endif

test.cpp

#include "top.h"
#include "opencv_top.h"

using namespace std;
using namespace cv;

//高斯滤波
int main(int argc, char** argv)
{
    //mat的导入与创建
    Mat src_mat = imread("lena.jpg");
    Mat dst_mat;//存结果
    imshow("original_lena,jpg",src_mat);

    dst_mat = cv::Mat::zeros(src_mat.cols, src_mat.rows, CV_8UC3);

    //HLS
    AXI_STREAM  src_axi, dst_axi;

    cvMat2AXIvideo(src_mat, src_axi);
    hls_gaussianblur(src_axi, dst_axi, src_mat.cols, src_mat.rows);

    AXIvideo2cvMat(dst_axi, dst_mat);
    cv::imshow("hls_gaussian.jpg", dst_mat);

    //ʹOPENCV
    opencv_image_guassianblur(src_mat, dst_mat);
    cv::imshow("opencv_gaussian.jpg", dst_mat);
  • 5
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值