From 39f851f7fda4e46942e082cd71eb2f029c12a7c0 Mon Sep 17 00:00:00 2001 From: ser1zw Date: Sun, 13 Oct 2013 02:08:51 +0900 Subject: [PATCH 1/4] fix issue #33 --- ext/opencv/extconf.rb | 27 +++++++++++++++++++++------ ext/opencv/opencv.cpp | 2 ++ ext/opencv/opencv.h | 5 ++++- 3 files changed, 27 insertions(+), 7 deletions(-) diff --git a/ext/opencv/extconf.rb b/ext/opencv/extconf.rb index 576b4c7..8dc665e 100755 --- a/ext/opencv/extconf.rb +++ b/ext/opencv/extconf.rb @@ -23,48 +23,63 @@ opencv_headers = ["opencv2/core/core_c.h", "opencv2/core/core.hpp", "opencv2/img "opencv2/imgproc/imgproc.hpp", "opencv2/video/tracking.hpp", "opencv2/features2d/features2d.hpp", "opencv2/flann/flann.hpp", "opencv2/calib3d/calib3d.hpp", "opencv2/objdetect/objdetect.hpp", "opencv2/legacy/compat.hpp", "opencv2/legacy/legacy.hpp", "opencv2/highgui/highgui_c.h", - "opencv2/highgui/highgui.hpp", "opencv2/photo/photo.hpp", "opencv2/nonfree/nonfree.hpp"] + "opencv2/highgui/highgui.hpp", "opencv2/photo/photo.hpp"] + +opencv_headers_opt = ["opencv2/nonfree/nonfree.hpp"] opencv_libraries = ["opencv_calib3d", "opencv_contrib", "opencv_core", "opencv_features2d", - "opencv_flann", "opencv_gpu", "opencv_highgui", "opencv_imgproc", - "opencv_legacy", "opencv_ml", "opencv_objdetect", "opencv_video", - "opencv_photo", "opencv_nonfree"] - + "opencv_flann", "opencv_highgui", "opencv_imgproc", "opencv_legacy", + "opencv_ml", "opencv_objdetect", "opencv_video", "opencv_photo"] +opencv_libraries_opt = ["opencv_gpu", "opencv_nonfree"] puts ">> Check the required libraries..." case CONFIG["arch"] when /mswin32/ suffix = cv_version_suffix(incdir) opencv_libraries.map! {|lib| lib + suffix } + opencv_libraries_opt.map! {|lib| lib + suffix } have_library("msvcrt") opencv_libraries.each {|lib| raise "#{lib}.lib not found." unless have_library(lib) } + opencv_libraries_opt.each {|lib| + warn "#{lib}.lib not found." unless have_library(lib) + } $CFLAGS << ' /EHsc' when /mingw32/ suffix = cv_version_suffix(incdir) opencv_libraries.map! {|lib| lib + suffix } + opencv_libraries_opt.map! {|lib| lib + suffix } have_library("msvcrt") opencv_libraries.each {|lib| raise "lib#{lib} not found." unless have_library(lib) } + opencv_libraries_opt.each {|lib| + warn "lib#{lib} not found." unless have_library(lib) + } else opencv_libraries.each {|lib| raise "lib#{lib} not found." unless have_library(lib) } + opencv_libraries_opt.each {|lib| + warn "lib#{lib} not found." unless have_library(lib) + } have_library("stdc++") end # Check the required headers puts ">> Check the required headers..." opencv_headers.each {|header| + raise "#{header} not found." unless have_header(header) +} +opencv_headers_opt.each {|header| unless have_header(header) if CONFIG["arch"] =~ /mswin32/ and File.exists? "#{incdir}/#{header}" # In mswin32, have_header('opencv2/nonfree/nonfree.hpp') fails because of a syntax problem. warn "warning: #{header} found but `have_header` failed." $defs << "-DHAVE_#{header.tr_cpp}" else - raise "#{header} not found." + warn "#{header} not found." end end } diff --git a/ext/opencv/opencv.cpp b/ext/opencv/opencv.cpp index c51aee8..8577417 100644 --- a/ext/opencv/opencv.cpp +++ b/ext/opencv/opencv.cpp @@ -772,6 +772,8 @@ extern "C" { */ #endif +#ifdef HAVE_NONFREE_H cv::initModule_nonfree(); +#endif } } diff --git a/ext/opencv/opencv.h b/ext/opencv/opencv.h index 6bf5e42..78c3d8b 100644 --- a/ext/opencv/opencv.h +++ b/ext/opencv/opencv.h @@ -62,7 +62,6 @@ extern "C" { #include "opencv2/video/tracking.hpp" #include "opencv2/video/background_segm.hpp" #include "opencv2/features2d/features2d.hpp" -#include "opencv2/nonfree/nonfree.hpp" #include "opencv2/flann/flann.hpp" #include "opencv2/calib3d/calib3d.hpp" #include "opencv2/objdetect/objdetect.hpp" @@ -79,6 +78,10 @@ extern "C" { #include "opencv2/ml/ml.hpp" #endif +#ifdef HAVE_NONFREE_H +#include "opencv2/nonfree/nonfree.hpp" +#endif + // Ruby/OpenCV headers #include "cvutils.h" #include "cverror.h" From 7378e57cab7b034a3bb5e7aaa7aacf76dc95d931 Mon Sep 17 00:00:00 2001 From: ser1zw Date: Sat, 29 Mar 2014 17:12:01 +0900 Subject: [PATCH 2/4] fix #33 and #49 --- ext/opencv/extconf.rb | 2 +- ext/opencv/opencv.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ext/opencv/extconf.rb b/ext/opencv/extconf.rb index f3720b6..0fa94cd 100755 --- a/ext/opencv/extconf.rb +++ b/ext/opencv/extconf.rb @@ -84,7 +84,7 @@ opencv_headers.each {|header| raise "#{header} not found." unless have_header(header) } opencv_headers_opt.each {|header| - raise "#{header} not found." unless have_header(header) + warn "#{header} not found." unless have_header(header) } have_header("stdarg.h") diff --git a/ext/opencv/opencv.cpp b/ext/opencv/opencv.cpp index 7f6f7a2..de88cf8 100644 --- a/ext/opencv/opencv.cpp +++ b/ext/opencv/opencv.cpp @@ -771,7 +771,7 @@ extern "C" { */ #endif -#ifdef HAVE_NONFREE_H +#ifdef HAVE_OPENCV2_NONFREE_NONFREE_HPP cv::initModule_nonfree(); #endif } From 5931644656f9d4eb080ecb63f2bde7de2de2641d Mon Sep 17 00:00:00 2001 From: ser1zw Date: Sat, 29 Mar 2014 20:29:53 +0900 Subject: [PATCH 3/4] bugfix --- ext/opencv/opencv.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ext/opencv/opencv.h b/ext/opencv/opencv.h index 2f20551..97dc19f 100644 --- a/ext/opencv/opencv.h +++ b/ext/opencv/opencv.h @@ -78,7 +78,7 @@ extern "C" { #include "opencv2/ml/ml.hpp" #endif -#ifdef HAVE_NONFREE_H +#ifdef HAVE_OPENCV2_NONFREE_NONFREE_HPP #include "opencv2/nonfree/nonfree.hpp" #endif From 1f31343d3661ae43f78ae516395984147bf2b072 Mon Sep 17 00:00:00 2001 From: ser1zw Date: Sat, 29 Mar 2014 20:31:10 +0900 Subject: [PATCH 4/4] refactoring --- ext/opencv/extconf.rb | 48 +++++++++++-------------------------------- 1 file changed, 12 insertions(+), 36 deletions(-) diff --git a/ext/opencv/extconf.rb b/ext/opencv/extconf.rb index 0fa94cd..1500fa5 100755 --- a/ext/opencv/extconf.rb +++ b/ext/opencv/extconf.rb @@ -34,7 +34,6 @@ opencv_headers = ["opencv2/core/core_c.h", "opencv2/core/core.hpp", "opencv2/img "opencv2/flann/flann.hpp", "opencv2/calib3d/calib3d.hpp", "opencv2/objdetect/objdetect.hpp", "opencv2/legacy/compat.hpp", "opencv2/legacy/legacy.hpp", "opencv2/highgui/highgui_c.h", "opencv2/highgui/highgui.hpp", "opencv2/photo/photo.hpp"] - opencv_headers_opt = ["opencv2/nonfree/nonfree.hpp"] opencv_libraries = ["opencv_calib3d", "opencv_contrib", "opencv_core", "opencv_features2d", @@ -43,49 +42,26 @@ opencv_libraries = ["opencv_calib3d", "opencv_contrib", "opencv_core", "opencv_f opencv_libraries_opt = ["opencv_gpu", "opencv_nonfree"] puts ">> Check the required libraries..." -case CONFIG["arch"] -when /mswin32/ +if $mswin or $mingw suffix = cv_version_suffix(incdir) - opencv_libraries.map! {|lib| lib + suffix } - opencv_libraries_opt.map! {|lib| lib + suffix } + opencv_libraries.map! { |lib| lib + suffix } + opencv_libraries_opt.map! { |lib| lib + suffix } have_library("msvcrt") - opencv_libraries.each {|lib| - raise "#{lib}.lib not found." unless have_library(lib) - } - opencv_libraries_opt.each {|lib| - warn "#{lib}.lib not found." unless have_library(lib) - } - $CFLAGS << ' /EHsc' - CONFIG['CXXFLAGS'] << ' /EHsc' -when /mingw32/ - suffix = cv_version_suffix(incdir) - opencv_libraries.map! {|lib| lib + suffix } - opencv_libraries_opt.map! {|lib| lib + suffix } - have_library("msvcrt") - opencv_libraries.each {|lib| - raise "lib#{lib} not found." unless have_library(lib) - } - opencv_libraries_opt.each {|lib| - warn "lib#{lib} not found." unless have_library(lib) - } + if $mswin + $CFLAGS << ' /EHsc' + CONFIG['CXXFLAGS'] << ' /EHsc' + end else - opencv_libraries.each {|lib| - raise "lib#{lib} not found." unless have_library(lib) - } - opencv_libraries_opt.each {|lib| - warn "lib#{lib} not found." unless have_library(lib) - } have_library("stdc++") end +opencv_libraries.each { |lib| raise "#{lib} not found." unless have_library(lib) } +opencv_libraries_opt.each { |lib| warn "#{lib} not found." unless have_library(lib) } + # Check the required headers puts ">> Check the required headers..." -opencv_headers.each {|header| - raise "#{header} not found." unless have_header(header) -} -opencv_headers_opt.each {|header| - warn "#{header} not found." unless have_header(header) -} +opencv_headers.each { |header| raise "#{header} not found." unless have_header(header) } +opencv_headers_opt.each { |header| warn "#{header} not found." unless have_header(header) } have_header("stdarg.h") if $warnflags