OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 964|回复: 6

[XILINX] Vitis HLS链接opencv库失败,导致对应的头文件无法识别

[复制链接]

2

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
65
金钱
65
注册时间
2023-8-19
在线时间
14 小时
发表于 2024-4-11 17:02:11 | 显示全部楼层 |阅读模式
5金钱
本帖最后由 栗栗栗子 于 2024-4-11 17:52 编辑

在project setting中已经包含了对应的库的路径但是还是显示没有链接到对应的源文件?用的是Vitis HLS2020.2,按照最新的Vitis HLS开发教程来的。显示错误的问题处已经解决了,但是又显示了新的问题,教程上显示需要更改sobel算子的文件,需要对xFSobelFilter3x3函数进行更改,已经按照教程进行了对应更改,但是由于 xFSobelFilter3x3函数中调用了ProcessSobel3x3函数,该函数中也使用到了XFCVDEPTH_IN这个参数,按照这样说的话,ProcessSobel3x3函数也是需要更改的,请问该如何更改呢?




























3682E1AE4B2A7052C25E1BC2BE2956A2.png

最佳答案

查看完整内容[请看2#楼]

/************************************************************************************** * ProcessSobel3x3 : Computes gradients for the column input data **************************************************************************************/ template void ProcessSobel3x3(//xf::cv::Mat& _src_mat, //xf::cv::Mat& _gradx_mat, //xf::cv::Mat& _grady_ma ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

3

主题

25

帖子

0

精华

初级会员

Rank: 2

积分
99
金钱
99
注册时间
2023-2-22
在线时间
20 小时
发表于 2024-4-11 17:02:12 | 显示全部楼层

/**************************************************************************************
* ProcessSobel3x3 : Computes gradients for the column input data
**************************************************************************************/
template <int SRC_T,
          int DST_T,
          int ROWS,
          int COLS,
          int PLANES,
          int DEPTH_SRC,
          int DEPTH_DST,
          int NPC,
          //int XFCVDEPTH_IN = _XFCVDEPTH_DEFAULT,
          //int XFCVDEPTH_gradx = _XFCVDEPTH_DEFAULT,
          //int XFCVDEPTH_grady = _XFCVDEPTH_DEFAULT,
          int WORDWIDTH_SRC,
          int WORDWIDTH_DST,
          int TC>
void ProcessSobel3x3(//xf::cv::Mat<SRC_T, ROWS, COLS, NPC, XFCVDEPTH_IN>& _src_mat,
                     //xf::cv::Mat<DST_T, ROWS, COLS, NPC, XFCVDEPTH_gradx>& _gradx_mat,
                     //xf::cv::Mat<DST_T, ROWS, COLS, NPC, XFCVDEPTH_grady>& _grady_mat,
                     
                     xf::cv::Mat<SRC_T, ROWS, COLS, NPC>& _src_mat,
                     xf::cv::Mat<DST_T, ROWS, COLS, NPC>& _gradx_mat,
                     xf::cv::Mat<DST_T, ROWS, COLS, NPC>& _grady_mat,
                     XF_SNAME(WORDWIDTH_SRC) buf[3][(COLS >> XF_BITSHIFT(NPC))],
                     XF_PTNAME(DEPTH_SRC) src_buf1[XF_NPIXPERCYCLE(NPC) + 2],
                     XF_PTNAME(DEPTH_SRC) src_buf2[XF_NPIXPERCYCLE(NPC) + 2],
                     XF_PTNAME(DEPTH_SRC) src_buf3[XF_NPIXPERCYCLE(NPC) + 2],
                     XF_PTNAME(DEPTH_DST) GradientValuesX[XF_NPIXPERCYCLE(NPC)],
                     XF_PTNAME(DEPTH_DST) GradientValuesY[XF_NPIXPERCYCLE(NPC)],
                     XF_SNAME(WORDWIDTH_DST) & P0,
                     XF_SNAME(WORDWIDTH_DST) & P1,
                     uint16_t img_width,
                     uint16_t img_height,
                     ap_uint<13> row_ind,
                     uint16_t& shift_x,
                     uint16_t& shift_y,
                     ap_uint<2> tp,
                     ap_uint<2> mid,
                     ap_uint<2> bottom,
                     ap_uint<13> row,
                     int& read_index,
                     int& write_index) {
// clang-format off
#pragma HLS INLINE
    // clang-format on

    XF_SNAME(WORDWIDTH_SRC) buf0, buf1, buf2;
    uint16_t npc = XF_NPIXPERCYCLE(NPC);
    ap_uint<5> buf_size = XF_NPIXPERCYCLE(NPC) + 2;

Col_Loop:
    for (ap_uint<13> col = 0; col < img_width; col++) {
// clang-format off
#pragma HLS LOOP_TRIPCOUNT min=TC max=TC
#pragma HLS pipeline
        // clang-format on
        if (row < img_height)
            buf[row_ind][col] = _src_mat.read(read_index++); // Read data
        else
            buf[bottom][col] = 0;
        buf0 = buf[tp][col];
        buf1 = buf[mid][col];
        buf2 = buf[bottom][col];

        if (NPC == XF_NPPC8) {
            xfExtractPixels<NPC, WORDWIDTH_SRC, DEPTH_SRC>(&src_buf1[2], buf0, 0);
            xfExtractPixels<NPC, WORDWIDTH_SRC, DEPTH_SRC>(&src_buf2[2], buf1, 0);
            xfExtractPixels<NPC, WORDWIDTH_SRC, DEPTH_SRC>(&src_buf3[2], buf2, 0);
        } else {
            src_buf1[2] = buf0;
            src_buf2[2] = buf1;
            src_buf3[2] = buf2;
        }

        xFSobel3x3<PLANES, NPC, DEPTH_SRC, DEPTH_DST>(GradientValuesX, GradientValuesY, src_buf1, src_buf2, src_buf3);

        if (col == 0) {
            shift_x = 0;
            shift_y = 0;
            P0 = 0;
            P1 = 0;

            xfPackPixels<NPC, WORDWIDTH_DST, DEPTH_DST>(&GradientValuesX[0], P0, 1, (npc - 1), shift_x);
            xfPackPixels<NPC, WORDWIDTH_DST, DEPTH_DST>(&GradientValuesY[0], P1, 1, (npc - 1), shift_y);

        } else {
            xfPackPixels<NPC, WORDWIDTH_DST, DEPTH_DST>(&GradientValuesX[0], P0, 0, 1, shift_x);
            xfPackPixels<NPC, WORDWIDTH_DST, DEPTH_DST>(&GradientValuesY[0], P1, 0, 1, shift_y);

            _gradx_mat.write(write_index, P0);
            _grady_mat.write(write_index++, P1);

            shift_x = 0;
            shift_y = 0;
            P0 = 0;
            P1 = 0;

            xfPackPixels<NPC, WORDWIDTH_DST, DEPTH_DST>(&GradientValuesX[0], P0, 1, (npc - 1), shift_x);
            xfPackPixels<NPC, WORDWIDTH_DST, DEPTH_DST>(&GradientValuesY[0], P1, 1, (npc - 1), shift_y);
        }

        src_buf1[0] = src_buf1[buf_size - 2];
        src_buf1[1] = src_buf1[buf_size - 1];
        src_buf2[0] = src_buf2[buf_size - 2];
        src_buf2[1] = src_buf2[buf_size - 1];
        src_buf3[0] = src_buf3[buf_size - 2];
        src_buf3[1] = src_buf3[buf_size - 1];
    } // Col_Loop
}
回复

使用道具 举报

1

主题

12

帖子

0

精华

新手上路

积分
24
金钱
24
注册时间
2024-4-11
在线时间
8 小时
发表于 2024-4-12 18:50:21 | 显示全部楼层
我也遇见类似的问题了,请问你解决了吗
回复

使用道具 举报

2

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
65
金钱
65
注册时间
2023-8-19
在线时间
14 小时
 楼主| 发表于 2024-4-13 12:04:37 | 显示全部楼层
cowcow 发表于 2024-4-12 18:50
我也遇见类似的问题了,请问你解决了吗

解决了,就是按照上面的回复改一下sobel的hpp文件就可以了
回复

使用道具 举报

1

主题

12

帖子

0

精华

新手上路

积分
24
金钱
24
注册时间
2024-4-11
在线时间
8 小时
发表于 2024-4-13 19:27:46 | 显示全部楼层
栗栗栗子 发表于 2024-4-13 12:04
解决了,就是按照上面的回复改一下sobel的hpp文件就可以了

请问 project setting中包含了对应的库的路径但是还是显示没有链接到对应的源文件 这个问题你是怎么解决的呢
回复

使用道具 举报

2

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
65
金钱
65
注册时间
2023-8-19
在线时间
14 小时
 楼主| 发表于 2024-4-14 16:18:53 | 显示全部楼层
cowcow 发表于 2024-4-13 19:27
请问 project setting中包含了对应的库的路径但是还是显示没有链接到对应的源文件 这个问题你是怎么解决 ...

我是按照叫教程来设置的,虽然在vitis hls的界面中会显示有波浪线,就是显示找不到,但是我直接进行C 综合了,综合通过了就没管了,还有一种办法是直接在include把对应的头文件路径全部包含,好像也可以?
回复

使用道具 举报

1

主题

12

帖子

0

精华

新手上路

积分
24
金钱
24
注册时间
2024-4-11
在线时间
8 小时
发表于 2024-4-15 09:48:55 | 显示全部楼层
行吧,我这里直接c综合他还是报错说头文件找不到,谢谢了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 11:19

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表