编译 darknet 的时候出现这个错误,把 home/darknet/src/imageopencv.cpp 修改如下:

#ifdef OPENCV#include "stdio.h"
#include "stdlib.h"
#include "opencv2/opencv.hpp"
#include "image.h"using namespace cv;extern "C" {/*IplImage *image_to_ipl(image im)
{int x,y,c;IplImage *disp = cvCreateImage(cvSize(im.w,im.h), IPL_DEPTH_8U, im.c);int step = disp->widthStep;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];disp->imageData[y*step + x*im.c + c] = (unsigned char)(val*255);}}}return disp;
}image ipl_to_image(IplImage* src)
{int h = src->height;int w = src->width;int c = src->nChannels;image im = make_image(w, h, c);unsigned char *data = (unsigned char *)src->imageData;int step = src->widthStep;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.;}}}return im;
}*//*Mat image_to_mat(image im)
{image copy = copy_image(im);constrain_image(copy);if(im.c == 3) rgbgr_image(copy);IplImage *ipl = image_to_ipl(copy);Mat m = cvarrToMat(ipl, true);cvReleaseImage(&ipl);free_image(copy);return m;
}image mat_to_image(Mat m)
{IplImage ipl = m;image im = ipl_to_image(&ipl);rgbgr_image(im);return im;
}*/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;// free_image(copy);
// return m;
//     IplImage *ipl = image_to_ipl(copy);
//     Mat m = cvarrToMat(ipl, true);
//     cvReleaseImage(&ipl);
//     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;// IplImage ipl = m;// image im = ipl_to_image(&ipl);// 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(CV_CAP_PROP_FRAME_WIDTH, w);//if(h) cap->set(CV_CAP_PROP_FRAME_HEIGHT, w);//if(fps) cap->set(CV_CAP_PROP_FPS, w);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, CV_WND_PROP_FULLSCREEN, CV_WINDOW_FULLSCREEN);setWindowProperty(name, WND_PROP_FULLSCREEN, WINDOW_FULLSCREEN);} else {resizeWindow(name, w, h);if(strcmp(name, "Demo") == 0) moveWindow(name, 0, 0);}
}}#endif

原来的老代码我给注释了。

处理:‘IplImage’ does not name a type; did you mean ‘image’?相关推荐

  1. Ubuntu20.04+GeForce RTX 2080 SUPER+cuda11.1+cudnn8.0.4+openCV4.4.0编译

    Ubuntu20.04+GeForce RTX 2080 SUPER+cuda11.1+cudnn8.0.4+openCV4.4.0环境搭建 1.Ubuntu20.04系统安装 1.1 制作系统盘 1 ...

  2. CvArr、Mat、CvMat、IplImage、BYTE转换(总结而来)

    一.Mat类型:矩阵类型,Matrix. 在openCV中,Mat是一个多维的密集数据数组.可以用来处理向量和矩阵.图像.直方图等等常见的多维数据. Mat有3个重要的方法: 1.Mat mat =  ...

  3. OpenCV中 CvArr、Mat、CvMat、IplImage、BYTE转换(总结而来)

    一.Mat类型:矩阵类型,Matrix. 在openCV中,Mat是一个多维的密集数据数组.可以用来处理向量和矩阵.图像.直方图等等常见的多维数据. Mat有3个重要的方法: 1.Mat mat =  ...

  4. OpenCV中IplImage/CvMat/Mat转化关系

    原文链接:http://www.cnblogs.com/summerRQ/articles/2406109.html 如对内容和版权有何疑问,请拜访原作者或者通知本人. opencv中常见的与图像操作 ...

  5. opencv----(1) mat最好用,和IplImage,cvmat 比较

    学习了几天,发现mat比IplImage,cvmat 好用太多了. 不知道确切的原文出处,我是转自新浪的一篇博文:http://blog.sina.com.cn/s/blog_534497fd0101 ...

  6. IplImage, CvMat, Mat 的关系和相互转换 再次理解 /(ㄒoㄒ)/~~

    opencv中常见的与图像操作有关的数据容器有Mat,cvMat和IplImage,这三种类型都可以代表和显示图像,但是,Mat类型侧重于计算,数学性较高,openCV对Mat类型的计算也进行了优化. ...

  7. IplImage, CvMat, Mat 的关系和相互转换(转)

    opencv中常见的与图像操作有关的数据容器有Mat,cvMat和IplImage,这三种类型都可以代表和显示图像,但是,Mat类型侧重于计算,数学性较高,openCV对Mat类型的计算也进行了优化. ...

  8. cvsaveimage 异常_C++ IplImage*的若干bug之三:cvSaveImage問題

    源代碼: //crop image IplImage *imgTemp = imgcrop(rect, img); //從原圖img中裁剪出rect區域的圖像patch,該方法編譯運行均無誤 if(! ...

  9. CvMat、Mat、IplImage之间的转换详解及实例

    IplImage: 在OpenCV中IplImage是表示一个图像的结构体,也是从OpenCV1.0到目前最为重要的一个结构: 在之前的图像表示用IplImage,而且之前的OpenCV是用C语言编写 ...

  10. IplImage类型

    当使用OpenCV时,你会经常使用IplImage类型,该类型是OpenCV的基础图像类型.图像可能是灰度图,彩色图,四通道图(RGB+Alpha)等,而每个通道可能是整数或浮点数类型.OpenCV提 ...

最新文章

  1. 利用增强限制条件来求解问题
  2. 10小时,这回一次搞定 Kafka 源码!
  3. dz论坛ucenter打不开mysql_Discuz论坛搬家 ucenter info:can not connect to MySQL server解决办法...
  4. 一种高效快速的内存池实现(附源码)
  5. Java中的记录类型
  6. 拼图项目:一个不完整的难题
  7. Chapter5_Speaker_Verification
  8. 在Nginx/Tengine服务器上安装SSL证书
  9. matlab运动前无轨迹线,matlab 前轮前驱运动模型公式 和 轨迹仿真
  10. 图像预处理第4步:去离散杂点噪声
  11. 安装Windows版C / GCC编译器
  12. 任正非谈管理--读书笔记
  13. w ndows无法连接到无线网络,windows无法连接到无线网络,详细教您windows无法连接到无线网络怎么办...
  14. windows10一右击就转圈圈,假死状态解决了
  15. optaplanner学习笔记(十)约束配置:动态调整约束权重
  16. 弗拉基米尔·多罗宁_罗紫琳新欢俄亿万富豪 女星与老外的那些事儿
  17. 大事•Pandownload凉了
  18. JAVA2EE 十三大规范
  19. JS实现一键展开、折叠所有树节点
  20. Internet与Web技术的基本概念

热门文章

  1. 怎么把手机录音转换成mp3?
  2. m4a转换mp3格式怎么弄?
  3. 地下城php补丁怎么用,dnf补丁怎么用,教你如何学会使用补丁
  4. ccccccccccc
  5. kiriki模拟器Android9,Kirikiroid2模拟器
  6. 独立商城网站SEO优化方法
  7. 关于Ubuntu循环登陆界面
  8. 小米游戏本bios更新_小米笔记本13.3 8250U升级BIOS解决风扇异响
  9. 用php表示掷骰子两次比大小,php实现的中秋博饼游戏之掷骰子并输出结果功能详解...
  10. 神经元模型 Hodgkin Huxley model