Python 尝试使用网络摄像头时yolo编译出现问题
我安装了yolov3 darknet,工作正常。当我尝试使用网络摄像头的演示时,问题就出现了 将Makefila更改为OPENCV=1并重新编译后,我得到以下输出: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
./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);
}
}