From 815e7a127b062aa8bc4f4ba7af2cfd97c232f34c Mon Sep 17 00:00:00 2001 From: AlexeyAB Date: Thu, 3 Aug 2017 00:23:49 +0300 Subject: [PATCH] Supported OpenCV 3.0 and 2.4.13. Supported Windows and Linux. --- build/darknet/darknet.vcxproj | 12 ++++++------ build/darknet/darknet_no_gpu.vcxproj | 12 ++++++------ build/darknet/yolo_console_dll.vcxproj | 10 ++++++---- src/art.c | 10 +++++++++- src/classifier.c | 9 ++++++++- src/data.c | 8 ++++++-- src/demo.c | 9 ++++++++- src/detector.c | 10 ++++++++++ src/image.c | 8 +++++--- src/rnn_vid.c | 4 ++++ src/utils.c | 5 ++++- src/voxel.c | 4 ++++ src/yolo.c | 12 +++++------- src/yolo_console_dll.cpp | 15 +++++++++++---- 14 files changed, 92 insertions(+), 36 deletions(-) diff --git a/build/darknet/darknet.vcxproj b/build/darknet/darknet.vcxproj index 8c154ed5..b4da086a 100644 --- a/build/darknet/darknet.vcxproj +++ b/build/darknet/darknet.vcxproj @@ -88,14 +88,14 @@ Level3 Disabled true - C:\opencv_2.4.9\opencv\build\include;..\..\3rdparty\include;%(AdditionalIncludeDirectories);$(CudaToolkitIncludeDir);$(cudnn)\include - _MBCS;OPENCV;_TIMESPEC_DEFINED;_CRT_SECURE_NO_WARNINGS;GPU;WIN32;NDEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions) + C:\opencv_3.0\opencv\build\include;..\..\3rdparty\include;%(AdditionalIncludeDirectories);$(CudaToolkitIncludeDir);$(cudnn)\include + _MBCS;OPENCV;_TIMESPEC_DEFINED;_CRT_SECURE_NO_WARNINGS;_CRT_RAND_S;GPU;WIN32;NDEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions) CUDNN true true - C:\opencv_2.4.9\opencv\build\x64\vc14\lib;C:\opencv_2.4.9\opencv\build\x64\vc12\lib;$(CUDA_PATH)lib\$(PlatformName);$(cudnn)\lib\x64;%(AdditionalLibraryDirectories) + C:\opencv_3.0\opencv\build\x64\vc14\lib;C:\opencv_2.4.13\opencv\build\x64\vc12\lib;C:\opencv_2.4.13\opencv\build\x64\vc14\lib;$(CUDA_PATH)lib\$(PlatformName);$(cudnn)\lib\x64;%(AdditionalLibraryDirectories) $(OutDir)\$(TargetName)$(TargetExt) ..\..\3rdparty\lib\x64\pthreadVC2.lib;cublas.lib;curand.lib;cudart.lib;%(AdditionalDependencies) true @@ -131,8 +131,8 @@ true true true - C:\opencv_2.4.9\opencv\build\include;..\..\3rdparty\include;%(AdditionalIncludeDirectories);$(CudaToolkitIncludeDir);$(cudnn)\include - CUDNN;OPENCV;_TIMESPEC_DEFINED;_CRT_SECURE_NO_WARNINGS;GPU;WIN32;NDEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions) + C:\opencv_3.0\opencv\build\include;..\..\3rdparty\include;%(AdditionalIncludeDirectories);$(CudaToolkitIncludeDir);$(cudnn)\include + CUDNN;OPENCV;_TIMESPEC_DEFINED;_CRT_SECURE_NO_WARNINGS;_CRT_RAND_S;GPU;WIN32;NDEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions) c11 c++1y CompileAsCpp @@ -145,7 +145,7 @@ true true true - C:\opencv_2.4.9\opencv\build\x64\vc14\lib;C:\opencv_2.4.9\opencv\build\x64\vc12\lib;$(CUDA_PATH)lib\$(PlatformName);$(cudnn)\lib\x64;%(AdditionalLibraryDirectories) + C:\opencv_3.0\opencv\build\x64\vc14\lib;C:\opencv_2.4.13\opencv\build\x64\vc12\lib;C:\opencv_2.4.13\opencv\build\x64\vc14\lib;$(CUDA_PATH)lib\$(PlatformName);$(cudnn)\lib\x64;%(AdditionalLibraryDirectories) ..\..\3rdparty\lib\x64\pthreadVC2.lib;cublas.lib;curand.lib;cudart.lib;%(AdditionalDependencies) $(OutDir)\$(TargetName)$(TargetExt) diff --git a/build/darknet/darknet_no_gpu.vcxproj b/build/darknet/darknet_no_gpu.vcxproj index 6da02a2d..db59fa89 100644 --- a/build/darknet/darknet_no_gpu.vcxproj +++ b/build/darknet/darknet_no_gpu.vcxproj @@ -86,14 +86,14 @@ Level3 Disabled true - C:\opencv_2.4.9\opencv\build\include;..\..\3rdparty\include;%(AdditionalIncludeDirectories) - _MBCS;OPENCV;_TIMESPEC_DEFINED;_CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions) + C:\opencv_3.0\opencv\build\include;%(AdditionalIncludeDirectories) + _MBCS;OPENCV;_TIMESPEC_DEFINED;_CRT_SECURE_NO_WARNINGS;_CRT_RAND_S;WIN32;NDEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions) CUDNN true true - C:\opencv_2.4.9\opencv\build\x64\vc12\lib;%(AdditionalLibraryDirectories) + C:\opencv_3.0\opencv\build\x64\vc14\lib;C:\opencv_2.4.13\opencv\build\x64\vc12\lib;%(AdditionalLibraryDirectories) $(OutDir)\$(TargetName)$(TargetExt) ..\..\3rdparty\lib\x64\pthreadVC2.lib;%(AdditionalDependencies) @@ -127,8 +127,8 @@ true true true - C:\opencv_2.4.9\opencv\build\include;..\..\3rdparty\include;%(AdditionalIncludeDirectories) - OPENCV;_TIMESPEC_DEFINED;_CRT_SECURE_NO_WARNINGS;WIN32;NDEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions) + C:\opencv_3.0\opencv\build\include;..\..\3rdparty\include;%(AdditionalIncludeDirectories) + OPENCV;_TIMESPEC_DEFINED;_CRT_SECURE_NO_WARNINGS;_CRT_RAND_S;WIN32;NDEBUG;_CONSOLE;_LIB;%(PreprocessorDefinitions) c11 c++1y CompileAsCpp @@ -140,7 +140,7 @@ true true true - C:\opencv_2.4.9\opencv\build\x64\vc12\lib;%(AdditionalLibraryDirectories) + C:\opencv_3.0\opencv\build\x64\vc14\lib;C:\opencv_2.4.13\opencv\build\x64\vc12\lib;%(AdditionalLibraryDirectories) ..\..\3rdparty\lib\x64\pthreadVC2.lib;%(AdditionalDependencies) $(OutDir)\$(TargetName)$(TargetExt) diff --git a/build/darknet/yolo_console_dll.vcxproj b/build/darknet/yolo_console_dll.vcxproj index 9695a6d5..3070428c 100644 --- a/build/darknet/yolo_console_dll.vcxproj +++ b/build/darknet/yolo_console_dll.vcxproj @@ -87,11 +87,12 @@ Level3 Disabled true - C:\opencv_2.4.9\opencv\build\include + C:\opencv_3.0\opencv\build\include MultiThreadedDLL + _CRT_SECURE_NO_WARNINGS;_MBCS;%(PreprocessorDefinitions) - C:\opencv_2.4.9\opencv\build\x64\vc12\lib + C:\opencv_3.0\opencv\build\x64\vc14\lib;C:\opencv_2.4.13\opencv\build\x64\vc12\lib @@ -114,12 +115,13 @@ true true true - C:\opencv_2.4.9\opencv\build\include + C:\opencv_3.0\opencv\build\include + _CRT_SECURE_NO_WARNINGS;_MBCS;%(PreprocessorDefinitions) true true - C:\opencv_2.4.9\opencv\build\x64\vc12\lib + C:\opencv_3.0\opencv\build\x64\vc14\lib;C:\opencv_2.4.13\opencv\build\x64\vc12\lib diff --git a/src/art.c b/src/art.c index 66cef5ae..2a28370a 100644 --- a/src/art.c +++ b/src/art.c @@ -4,13 +4,21 @@ #include "option_list.h" #include "blas.h" #include "classifier.h" -//#include +#ifdef WIN32 #include #include #include "gettimeofday.h" +#else +#include +#endif + #ifdef OPENCV #include "opencv2/highgui/highgui_c.h" +#include "opencv2/core/version.hpp" +#ifndef CV_VERSION_EPOCH +#include "opencv2/videoio/videoio_c.h" +#endif image get_image_from_stream(CvCapture *cap); #endif diff --git a/src/classifier.c b/src/classifier.c index fbfe5e71..5e718c51 100644 --- a/src/classifier.c +++ b/src/classifier.c @@ -6,13 +6,20 @@ #include "assert.h" #include "classifier.h" #include "cuda.h" -//#include +#ifdef WIN32 #include #include #include "gettimeofday.h" +#else +#include +#endif #ifdef OPENCV #include "opencv2/highgui/highgui_c.h" +#include "opencv2/core/version.hpp" +#ifndef CV_VERSION_EPOCH +#include "opencv2/videoio/videoio_c.h" +#endif image get_image_from_stream(CvCapture *cap); #endif diff --git a/src/data.c b/src/data.c index c64bbcee..f3fa04f6 100644 --- a/src/data.c +++ b/src/data.c @@ -42,7 +42,11 @@ char **get_random_paths_indexes(char **paths, int n, int m, int *indexes) inline unsigned int random_gen() { unsigned int Num = 0; +#ifdef WIN32 rand_s(&Num); +#else + Num = rand(); +#endif return Num; } @@ -723,7 +727,7 @@ data load_data_detection(int n, char **paths, int m, int w, int h, int boxes, in void *load_thread(void *ptr) { - srand(time(0)); + //srand(time(0)); //printf("Loading data: %d\n", random_gen()); load_args a = *(struct load_args*)ptr; if(a.exposure == 0) a.exposure = 1; @@ -767,7 +771,7 @@ pthread_t load_data_in_thread(load_args args) void *load_threads(void *ptr) { - srand(time(0)); + //srand(time(0)); int i; load_args args = *(load_args *)ptr; if (args.threads == 0) args.threads = 1; diff --git a/src/demo.c b/src/demo.c index 3aec3a5c..49e08c20 100644 --- a/src/demo.c +++ b/src/demo.c @@ -7,16 +7,23 @@ #include "box.h" #include "image.h" #include "demo.h" -//#include +#ifdef WIN32 #include #include #include "gettimeofday.h" +#else +#include +#endif #define FRAMES 3 #ifdef OPENCV #include "opencv2/highgui/highgui_c.h" #include "opencv2/imgproc/imgproc_c.h" +#include "opencv2/core/version.hpp" +#ifndef CV_VERSION_EPOCH +#include "opencv2/videoio/videoio_c.h" +#endif image get_image_from_stream(CvCapture *cap); static char **demo_names; diff --git a/src/detector.c b/src/detector.c index 2aaa8285..f6b700ca 100644 --- a/src/detector.c +++ b/src/detector.c @@ -9,6 +9,16 @@ #ifdef OPENCV #include "opencv2/highgui/highgui_c.h" +#include "opencv2/core/core_c.h" +#include "opencv2/core/version.hpp" +#ifndef CV_VERSION_EPOCH +#include "opencv2/videoio/videoio_c.h" +#pragma comment(lib, "opencv_world320.lib") +#else +#pragma comment(lib, "opencv_core2413.lib") +#pragma comment(lib, "opencv_imgproc2413.lib") +#pragma comment(lib, "opencv_highgui2413.lib") +#endif #endif static int coco_ids[] = {1,2,3,4,5,6,7,8,9,10,11,13,14,15,16,17,18,19,20,21,22,23,24,25,27,28,31,32,33,34,35,36,37,38,39,40,41,42,43,44,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,67,70,72,73,74,75,76,77,78,79,80,81,82,84,85,86,87,88,89,90}; diff --git a/src/image.c b/src/image.c index caded322..35bd8a04 100644 --- a/src/image.c +++ b/src/image.c @@ -13,6 +13,10 @@ #ifdef OPENCV #include "opencv2/highgui/highgui_c.h" #include "opencv2/imgproc/imgproc_c.h" +#include "opencv2/core/version.hpp" +#ifndef CV_VERSION_EPOCH +#include "opencv2/videoio/videoio_c.h" +#endif #endif @@ -291,7 +295,7 @@ void draw_detections_cv(IplImage* show_img, int num, float thresh, box *boxes, f CvScalar black_color; black_color.val[0] = 0; CvFont font; - cvInitFont(&font, CV_FONT_HERSHEY_COMPLEX, font_size, font_size, 0, font_size*3, 8); + cvInitFont(&font, CV_FONT_HERSHEY_SIMPLEX, font_size, font_size, 0, font_size * 3, 8); cvPutText(show_img, names[class], pt_text, &font, black_color); } } @@ -535,12 +539,10 @@ void show_image_cv_ipl(IplImage *disp, const char *name) static CvVideoWriter* output_video = NULL; // cv::VideoWriter output_video; if (output_video == NULL) { - //printf("\n SRC output_video = %p \n", output_video); const char* output_name = "test_dnn_out.avi"; //output_video = cvCreateVideoWriter(output_name, CV_FOURCC('H', '2', '6', '4'), 25, size, 1); output_video = cvCreateVideoWriter(output_name, CV_FOURCC('D', 'I', 'V', 'X'), 25, size, 1); //output_video = cvCreateVideoWriter(output_name, CV_FOURCC('M', 'J', 'P', 'G'), 25, size, 1); - //printf("\n cvCreateVideoWriter, DST output_video = %p \n", output_video); } cvWriteFrame(output_video, disp); // comment this line to improve FPS !!! diff --git a/src/rnn_vid.c b/src/rnn_vid.c index 7f4c2ba1..b9ea8a35 100644 --- a/src/rnn_vid.c +++ b/src/rnn_vid.c @@ -6,6 +6,10 @@ #ifdef OPENCV #include "opencv2/highgui/highgui_c.h" +#include "opencv2/core/version.hpp" +#ifndef CV_VERSION_EPOCH +#include "opencv2/videoio/videoio_c.h" +#endif image get_image_from_stream(CvCapture *cap); image ipl_to_image(IplImage* src); diff --git a/src/utils.c b/src/utils.c index 41e71d03..b0ef0fc0 100644 --- a/src/utils.c +++ b/src/utils.c @@ -6,8 +6,11 @@ #include "unistd.h" #include #include - +#ifdef WIN32 #include "utils.h" +#else +#include +#endif #pragma warning(disable: 4996) diff --git a/src/voxel.c b/src/voxel.c index 1b53880c..476663ff 100644 --- a/src/voxel.c +++ b/src/voxel.c @@ -5,6 +5,10 @@ #ifdef OPENCV #include "opencv2/highgui/highgui_c.h" +#include "opencv2/core/version.hpp" +#ifndef CV_VERSION_EPOCH +#include "opencv2/videoio/videoio_c.h" +#endif image get_image_from_stream(CvCapture *cap); #endif diff --git a/src/yolo.c b/src/yolo.c index 2a9cde3f..289a6cc1 100644 --- a/src/yolo.c +++ b/src/yolo.c @@ -7,14 +7,12 @@ #include "demo.h" #ifdef OPENCV -#pragma comment(lib, "opencv_core249.lib") -#pragma comment(lib, "opencv_imgproc249.lib") -#pragma comment(lib, "opencv_highgui249.lib") -//#pragma comment(lib, "opencv_gpu249.lib") -//#pragma comment(lib, "opencv_photo249.lib") -//#pragma comment(lib, "opencv_video249.lib") - #include "opencv2/highgui/highgui_c.h" +#include "opencv2/imgproc/imgproc_c.h" +#include "opencv2/core/version.hpp" +#ifndef CV_VERSION_EPOCH +#include "opencv2/videoio/videoio_c.h" +#endif #endif char *voc_names[] = {"aeroplane", "bicycle", "bird", "boat", "bottle", "bus", "car", "cat", "chair", "cow", "diningtable", "dog", "horse", "motorbike", "person", "pottedplant", "sheep", "sofa", "train", "tvmonitor"}; diff --git a/src/yolo_console_dll.cpp b/src/yolo_console_dll.cpp index b378b7f4..dbdaf85f 100644 --- a/src/yolo_console_dll.cpp +++ b/src/yolo_console_dll.cpp @@ -9,12 +9,19 @@ #include "yolo_v2_class.hpp" // imported functions from DLL - #ifdef OPENCV #include // C++ -#pragma comment(lib, "opencv_core249.lib") -#pragma comment(lib, "opencv_imgproc249.lib") -#pragma comment(lib, "opencv_highgui249.lib") +#include "opencv2/core/version.hpp" +#ifndef CV_VERSION_EPOCH +#include "opencv2/videoio/videoio.hpp" +#pragma comment(lib, "opencv_world320.lib") +#else +#pragma comment(lib, "opencv_core2413.lib") +#pragma comment(lib, "opencv_imgproc2413.lib") +#pragma comment(lib, "opencv_highgui2413.lib") +#endif + + void draw_boxes(cv::Mat mat_img, std::vector result_vec, std::vector obj_names, unsigned int wait_msec = 0) { for (auto &i : result_vec) { cv::Scalar color(60, 160, 260);