Python 尝试使用网络摄像头时yolo编译出现问题

Python 尝试使用网络摄像头时yolo编译出现问题,python,opencv,ubuntu-18.04,yolo,Python,Opencv,Ubuntu 18.04,Yolo,我安装了yolov3 darknet,工作正常。当我尝试使用网络摄像头的演示时,问题就出现了 将Makefila更改为OPENCV=1并重新编译后,我得到以下输出: ./src/image_opencv.cpp:12:1: error: ‘IplImage’ does not name a type; did you mean ‘image’? IplImage *image_to_ipl(image im) ^~~~~~~~ image compilation terminated du

我安装了yolov3 darknet,工作正常。当我尝试使用网络摄像头的演示时,问题就出现了

将Makefila更改为OPENCV=1并重新编译后,我得到以下输出:

./src/image_opencv.cpp:12:1: error: ‘IplImage’ does not name a type; did you mean ‘image’?
 IplImage *image_to_ipl(image im)
 ^~~~~~~~
 image
compilation terminated due to -Wfatal-errors.
Makefile:86: recipe for target 'obj/image_opencv.o' failed
make: *** [obj/image_opencv.o] Error 1
我安装了OpenCV 4.1.2,因为该命令的输出抛出:

pkg-config --modversion opencv
4.1.2
然而,为了让它工作,我不得不将/usr/local/lib/pkfgconfig上的opencv4.pc文件重命名为opencv.pc

另外,这是

pkg-config --cflags opencv
-I/usr/local/include/opencv4/opencv -I/usr/local/include/opencv4

任何帮助都将不胜感激,提前感谢

我通过添加以下内容解决了此问题:

#include "opencv2/imgproc/imgproc_c.h"

对于image\u opencv.cpp,这被视为不同的opencv4-opencv3

,我通过添加以下内容解决了此问题:

#include "opencv2/imgproc/imgproc_c.h"

image\u opencv.cpp,这被认为是文件src/image\u opencv.cpp中不同的opencv4-opencv3

添加@switchsyj提到的包含

#include "opencv2/imgproc/imgproc_c.h"
将mat_中的IplImage var声明更改为_图像函数:

image mat_to_image(Mat m)
{
    //IplImage ipl = m;
    IplImage ipl = cvIplImage(m);
    image im = ipl_to_image(&ipl);
    rgbgr_image(im);
    return im;
}
并在以下函数中从OPENCV常量中删除所有CV_uu前缀

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;
}


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);
    }
}

在文件src/image\u opencv.cpp中:

添加@switchsyj提到的包含

#include "opencv2/imgproc/imgproc_c.h"
将mat_中的IplImage var声明更改为_图像函数:

image mat_to_image(Mat m)
{
    //IplImage ipl = m;
    IplImage ipl = cvIplImage(m);
    image im = ipl_to_image(&ipl);
    rgbgr_image(im);
    return im;
}
并在以下函数中从OPENCV常量中删除所有CV_uu前缀

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;
}


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);
    }
}