• nvidia jetson xavier NX编译darknet时提示opencv错误, error: ‘IplImage’ does not name a type; did you mean ‘image’?


    原博客迁移到:https://blog.csdn.net/u013171226/article/details/107680308

    在nvidia jetson xavier NX安装了opencv,然后编译darknet,提示error: ‘IplImage’ does not name a type; did you mean ‘image’?

    解决方法是在src文件夹下查找错误里的image_opencv.cpp,将该文件内容全部替换为下面的内容,

    #ifdef OPENCV
    
    #include "stdio.h"
    #include "stdlib.h"
    #include "opencv2/opencv.hpp"
    #include "image.h"
    
    using namespace cv;
    
    extern "C" {
    
    Mat image_to_mat(image im)
    {
        image copy = copy_image(im);
        constrain_image(copy);
        if(im.c == 3) rgbgr_image(copy);
    
        Mat m(cv::Size(im.w,im.h), CV_8UC(im.c));
        int x,y,c;
    
        int step = m.step;
        for(y = 0; y < im.h; ++y){
            for(x = 0; x < im.w; ++x){
                for(c= 0; c < im.c; ++c){
                    float val = im.data[c*im.h*im.w + y*im.w + x];
                    m.data[y*step + x*im.c + c] = (unsigned char)(val*255);
                }
            }
        }
    
        free_image(copy);
        return m;
    }
    
    image mat_to_image(Mat m)
    {
        int h = m.rows;
        int w = m.cols;
        int c = m.channels();
        image im = make_image(w, h, c);
        unsigned char *data = (unsigned char *)m.data;
        int step = m.step;
        int i, j, k;
    
        for(i = 0; i < h; ++i){
            for(k= 0; k < c; ++k){
                for(j = 0; j < w; ++j){
                    im.data[k*w*h + i*w + j] = data[i*step + j*c + k]/255.;
                }
            }
        }
        rgbgr_image(im);
        return im;
    }
    
    void *open_video_stream(const char *f, int c, int w, int h, int fps)
    {
        VideoCapture *cap;
        if(f) cap = new VideoCapture(f);
        else cap = new VideoCapture(c);
        if(!cap->isOpened()) return 0;
        if(w) cap->set(CAP_PROP_FRAME_WIDTH, w);
        if(h) cap->set(CAP_PROP_FRAME_HEIGHT, w);
        if(fps) cap->set(CAP_PROP_FPS, w);
        return (void *) cap;
    }
    
    image get_image_from_stream(void *p)
    {
        VideoCapture *cap = (VideoCapture *)p;
        Mat m;
        *cap >> m;
        if(m.empty()) return make_empty_image(0,0,0);
        return mat_to_image(m);
    }
    
    image load_image_cv(char *filename, int channels)
    {
        int flag = -1;
        if (channels == 0) flag = -1;
        else if (channels == 1) flag = 0;
        else if (channels == 3) flag = 1;
        else {
            fprintf(stderr, "OpenCV can't force load with %d channels
    ", channels);
        }
        Mat m;
        m = imread(filename, flag);
        if(!m.data){
            fprintf(stderr, "Cannot load image "%s"
    ", filename);
            char buff[256];
            sprintf(buff, "echo %s >> bad.list", filename);
            system(buff);
            return make_image(10,10,3);
            //exit(0);
        }
        image im = mat_to_image(m);
        return im;
    }
    
    int show_image_cv(image im, const char* name, int ms)
    {
        Mat m = image_to_mat(im);
        imshow(name, m);
        int c = waitKey(ms);
        if (c != -1) c = c%256;
        return c;
    }
    
    void make_window(char *name, int w, int h, int fullscreen)
    {
        namedWindow(name, WINDOW_NORMAL); 
        if (fullscreen) {
            setWindowProperty(name, WND_PROP_FULLSCREEN, WINDOW_FULLSCREEN);
        } else {
            resizeWindow(name, w, h);
            if(strcmp(name, "Demo") == 0) moveWindow(name, 0, 0);
        }
    }
    
    }
    
    #endif

     原始博客如下:https://blog.csdn.net/a135013563/article/details/104859395

    作者:cumtchw
    出处:http://www.cnblogs.com/cumtchw/
    我的博客就是我的学习笔记,学习过程中看到好的博客也会转载过来,若有侵权,与我联系,我会及时删除。

  • 相关阅读:
    制作yaffs2文件系统
    nandwrite 参数
    linux并发控制之信号量
    mke2fs 制作ext2文件系统image
    stat文件状态信息结构体
    mount命令详解
    fiddler——http——cookie
    fiddler——http——请求方法、状态码
    http的cookie
    fiddler——http——header首部(请求首部和响应首部)——个人文档整理
  • 原文地址:https://www.cnblogs.com/cumtchw/p/12984113.html
Copyright © 2020-2023  润新知