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\n", channels); } Mat m; m = imread(filename, flag); if(!m.data){ fprintf(stderr, "Cannot load image \"%s\"\n", 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/
我的博客就是我的学习笔记,学习过程中看到好的博客也会转载过来,若有侵权,与我联系,我会及时删除。