From 1671ba56125f316b8557edea8771e6732981c047 Mon Sep 17 00:00:00 2001 From: Good Guy Date: Tue, 24 Mar 2020 22:28:37 -0600 Subject: [PATCH] remove filepng little-endian, reactivate sift in opencv --- cinelerra-5.1/cinelerra/filepng.C | 3 - cinelerra-5.1/opencv_build | 4 +- cinelerra-5.1/plugins/findobj/findobj.h | 4 +- .../thirdparty/src/opencv-20200306.tgz.patch1 | 159 ++++++++++++++++++ 4 files changed, 164 insertions(+), 6 deletions(-) create mode 100644 cinelerra-5.1/thirdparty/src/opencv-20200306.tgz.patch1 diff --git a/cinelerra-5.1/cinelerra/filepng.C b/cinelerra-5.1/cinelerra/filepng.C index 4df95f1e..3b28e0ea 100644 --- a/cinelerra-5.1/cinelerra/filepng.C +++ b/cinelerra-5.1/cinelerra/filepng.C @@ -228,9 +228,6 @@ int FilePNG::write_frame(VFrame *frame, VFrame *data, FrameWriterUnit *unit) png_set_IHDR(png_ptr, info_ptr, asset->width, asset->height, asset->png_depth, asset->png_use_alpha ? PNG_COLOR_TYPE_RGB_ALPHA : PNG_COLOR_TYPE_RGB, PNG_INTERLACE_NONE, PNG_COMPRESSION_TYPE_DEFAULT, PNG_FILTER_TYPE_DEFAULT); -// does not work (gg 2020/03/17 libpng16 fc31) - if( asset->png_depth == 16 && BC_Resources::little_endian ) - png_set_swap(png_ptr); png_write_info(png_ptr, info_ptr); png_write_image(png_ptr, output_frame->get_rows()); png_write_end(png_ptr, info_ptr); diff --git a/cinelerra-5.1/opencv_build b/cinelerra-5.1/opencv_build index fd029027..736e1d90 100644 --- a/cinelerra-5.1/opencv_build +++ b/cinelerra-5.1/opencv_build @@ -64,6 +64,8 @@ $(srcdir)/$(opencv_tar): $(opencv).src: $(srcdir)/$(opencv_tar) cd $(blddir) && rm -rf opencv opencv_contrib opencv.* tar -C $(blddir) -xzf $(srcdir)/$(opencv_tar); + $(foreach pch,$(sort $(wildcard $(srcdir)/$(opencv_tar).patch*)),\ + patch -d $(blddir) -p1 < $(pch);) touch $@ else $(error src not git/tar) @@ -88,7 +90,7 @@ $(opencv)/build: $(opencv).src LFLAGS += -Wl,--start-group LFLAGS += $(shell find $(opencv_prefix)/lib* -name "libopencv_*.a" 2> /dev/null) #opencv4 breaks SIFT/SURF findobj -LFLAGS += $(shell find $(opencv_prefix)/lib64/opencv4/3rdparty/lib* -name "lib*.a" 2> /dev/null) +LFLAGS += $(shell find $(opencv_prefix)/lib*/opencv4/3rdparty/lib* -name "lib*.a" 2> /dev/null) LFLAGS += $(shell find $(opencv_prefix)/share/OpenCV/3rdparty/lib* -name "lib*.a" 2> /dev/null) LFLAGS += -Wl,--end-group else ifeq ($(bld),dyn) diff --git a/cinelerra-5.1/plugins/findobj/findobj.h b/cinelerra-5.1/plugins/findobj/findobj.h index 2f4f45b2..2bea44af 100644 --- a/cinelerra-5.1/plugins/findobj/findobj.h +++ b/cinelerra-5.1/plugins/findobj/findobj.h @@ -64,8 +64,8 @@ using namespace cv::xfeatures2d; using namespace cvflann; // enabled detectors -// _SIFT/_SURF are broken in v4, although they work in v3, no upgrade -//#define _SIFT +#define _SIFT +// _SURF broken in v4, although works in v3 (patented) //#define _SURF #define _ORB #define _AKAZE diff --git a/cinelerra-5.1/thirdparty/src/opencv-20200306.tgz.patch1 b/cinelerra-5.1/thirdparty/src/opencv-20200306.tgz.patch1 new file mode 100644 index 00000000..7bcbe60f --- /dev/null +++ b/cinelerra-5.1/thirdparty/src/opencv-20200306.tgz.patch1 @@ -0,0 +1,159 @@ +diff -ruN a/opencv_contrib/modules/xfeatures2d/include/opencv2/xfeatures2d/nonfree.hpp b/opencv_contrib/modules/xfeatures2d/include/opencv2/xfeatures2d/nonfree.hpp +--- a/opencv_contrib/modules/xfeatures2d/include/opencv2/xfeatures2d/nonfree.hpp 2019-12-19 04:02:03.000000000 -0700 ++++ b/opencv_contrib/modules/xfeatures2d/include/opencv2/xfeatures2d/nonfree.hpp 2020-03-24 17:09:02.143528875 -0600 +@@ -50,40 +50,6 @@ + namespace xfeatures2d + { + +-//! @addtogroup xfeatures2d_nonfree +-//! @{ +- +-/** @brief Class for extracting keypoints and computing descriptors using the Scale Invariant Feature Transform +-(SIFT) algorithm by D. Lowe @cite Lowe04 . +- */ +-class CV_EXPORTS_W SIFT : public Feature2D +-{ +-public: +- /** +- @param nfeatures The number of best features to retain. The features are ranked by their scores +- (measured in SIFT algorithm as the local contrast) +- +- @param nOctaveLayers The number of layers in each octave. 3 is the value used in D. Lowe paper. The +- number of octaves is computed automatically from the image resolution. +- +- @param contrastThreshold The contrast threshold used to filter out weak features in semi-uniform +- (low-contrast) regions. The larger the threshold, the less features are produced by the detector. +- +- @param edgeThreshold The threshold used to filter out edge-like features. Note that the its meaning +- is different from the contrastThreshold, i.e. the larger the edgeThreshold, the less features are +- filtered out (more features are retained). +- +- @param sigma The sigma of the Gaussian applied to the input image at the octave \#0. If your image +- is captured with a weak camera with soft lenses, you might want to reduce the number. +- */ +- CV_WRAP static Ptr create( int nfeatures = 0, int nOctaveLayers = 3, +- double contrastThreshold = 0.04, double edgeThreshold = 10, +- double sigma = 1.6); +-}; +- +-typedef SIFT SiftFeatureDetector; +-typedef SIFT SiftDescriptorExtractor; +- + /** @brief Class for extracting Speeded Up Robust Features from an image @cite Bay06 . + + The algorithm parameters: +diff -ruN a/opencv_contrib/modules/xfeatures2d/include/opencv2/xfeatures2d.hpp b/opencv_contrib/modules/xfeatures2d/include/opencv2/xfeatures2d.hpp +--- a/opencv_contrib/modules/xfeatures2d/include/opencv2/xfeatures2d.hpp 2019-12-19 04:02:03.000000000 -0700 ++++ b/opencv_contrib/modules/xfeatures2d/include/opencv2/xfeatures2d.hpp 2020-03-24 17:09:02.143528875 -0600 +@@ -67,6 +67,39 @@ + namespace xfeatures2d + { + ++ ++/** @brief Class for extracting keypoints and computing descriptors using the Scale Invariant Feature Transform ++(SIFT) algorithm by D. Lowe @cite Lowe04 . ++*/ ++class CV_EXPORTS_W SIFT : public Feature2D ++{ ++public: ++ /** ++ @param nfeatures The number of best features to retain. The features are ranked by their scores ++ (measured in SIFT algorithm as the local contrast) ++ ++ @param nOctaveLayers The number of layers in each octave. 3 is the value used in D. Lowe paper. The ++ number of octaves is computed automatically from the image resolution. ++ ++ @param contrastThreshold The contrast threshold used to filter out weak features in semi-uniform ++ (low-contrast) regions. The larger the threshold, the less features are produced by the detector. ++ ++ @param edgeThreshold The threshold used to filter out edge-like features. Note that the its meaning ++ is different from the contrastThreshold, i.e. the larger the edgeThreshold, the less features are ++ filtered out (more features are retained). ++ ++ @param sigma The sigma of the Gaussian applied to the input image at the octave \#0. If your image ++ is captured with a weak camera with soft lenses, you might want to reduce the number. ++ */ ++ CV_WRAP static Ptr create(int nfeatures = 0, int nOctaveLayers = 3, ++ double contrastThreshold = 0.04, double edgeThreshold = 10, ++ double sigma = 1.6); ++}; ++ ++typedef SIFT SiftFeatureDetector; ++typedef SIFT SiftDescriptorExtractor; ++ ++ + //! @addtogroup xfeatures2d_experiment + //! @{ + +diff -ruN a/opencv_contrib/modules/xfeatures2d/src/sift.cpp b/opencv_contrib/modules/xfeatures2d/src/sift.cpp +--- a/opencv_contrib/modules/xfeatures2d/src/sift.cpp 2019-12-19 04:02:03.000000000 -0700 ++++ b/opencv_contrib/modules/xfeatures2d/src/sift.cpp 2020-03-24 17:09:07.164676799 -0600 +@@ -114,8 +114,6 @@ + namespace xfeatures2d + { + +-#ifdef OPENCV_ENABLE_NONFREE +- + /*! + SIFT implementation. + +@@ -1202,14 +1200,5 @@ + } + } + +-#else // ! #ifdef OPENCV_ENABLE_NONFREE +-Ptr SIFT::create( int, int, double, double, double ) +-{ +- CV_Error(Error::StsNotImplemented, +- "This algorithm is patented and is excluded in this configuration; " +- "Set OPENCV_ENABLE_NONFREE CMake option and rebuild the library"); +-} +-#endif +- + } + } +diff -ruN a/opencv_contrib/modules/xfeatures2d/test/test_features2d.cpp b/opencv_contrib/modules/xfeatures2d/test/test_features2d.cpp +--- a/opencv_contrib/modules/xfeatures2d/test/test_features2d.cpp 2019-12-19 04:02:03.000000000 -0700 ++++ b/opencv_contrib/modules/xfeatures2d/test/test_features2d.cpp 2020-03-24 17:09:07.165676829 -0600 +@@ -94,7 +94,6 @@ + /* + * Descriptors + */ +-#ifdef OPENCV_ENABLE_NONFREE + TEST( Features2d_DescriptorExtractor_SIFT, regression ) + { + CV_DescriptorExtractorTest > test( "descriptor-sift", 1.0f, +@@ -102,6 +101,7 @@ + test.safe_run(); + } + ++#ifdef OPENCV_ENABLE_NONFREE + TEST( Features2d_DescriptorExtractor_SURF, regression ) + { + #ifdef HAVE_OPENCL +@@ -375,8 +375,9 @@ + Ptr f2d; + }; + +-#ifdef OPENCV_ENABLE_NONFREE + TEST(Features2d_SIFTHomographyTest, regression) { CV_DetectPlanarTest test("SIFT", 80, SIFT::create()); test.safe_run(); } ++ ++#ifdef OPENCV_ENABLE_NONFREE + TEST(Features2d_SURFHomographyTest, regression) { CV_DetectPlanarTest test("SURF", 80, SURF::create()); test.safe_run(); } + #endif + +@@ -441,13 +442,13 @@ + Ptr featureDetector_; + }; + +-#ifdef OPENCV_ENABLE_NONFREE + TEST(Features2d_SIFT_using_mask, regression) + { + FeatureDetectorUsingMaskTest test(SIFT::create()); + test.safe_run(); + } + ++#ifdef OPENCV_ENABLE_NONFREE + TEST(DISABLED_Features2d_SURF_using_mask, regression) + { + FeatureDetectorUsingMaskTest test(SURF::create()); -- 2.26.2