media-plugins/frei0r-plugins: Fix build with opencv3. Patch from from Jozef Mlich...
authorAlexis Ballier <aballier@gentoo.org>
Thu, 5 Nov 2015 15:55:30 +0000 (16:55 +0100)
committerAlexis Ballier <aballier@gentoo.org>
Thu, 5 Nov 2015 15:55:30 +0000 (16:55 +0100)
Package-Manager: portage-2.2.24
Signed-off-by: Alexis Ballier <aballier@gentoo.org>
media-plugins/frei0r-plugins/files/frei0r-plugins-1.4-opencv3.patch [new file with mode: 0644]
media-plugins/frei0r-plugins/frei0r-plugins-1.4.ebuild

diff --git a/media-plugins/frei0r-plugins/files/frei0r-plugins-1.4-opencv3.patch b/media-plugins/frei0r-plugins/files/frei0r-plugins-1.4-opencv3.patch
new file mode 100644 (file)
index 0000000..6188c98
--- /dev/null
@@ -0,0 +1,50 @@
+--- ./frei0r-plugins-1.4/src/filter/facedetect/facedetect.c.opencv3    2013-02-24 14:43:22.000000000 +0100
++++ ./frei0r-plugins-1.4/src/filter/facedetect/facedetect.c    2015-07-08 12:44:30.987056878 +0200
+@@ -211,8 +211,8 @@ CvSeq* detect_and_draw( IplImage* img, C
+ 
+   double scale = 1.3;
+   IplImage* gray = cvCreateImage( cvSize(img->width,img->height), 8, 1 );
+-  IplImage* small_img = cvCreateImage( cvSize( cvRound (img->width/scale),
+-                                               cvRound (img->height/scale)),
++  IplImage* small_img = cvCreateImage( cvSize( cvRound ((double)img->width/scale),
++                                               cvRound ((double)img->height/scale)),
+                                        8, 1 );
+   int i;
+ 
+--- ./frei0r-plugins-1.4/src/filter/facedetect/facedetect.cpp.opencv3  2013-02-24 14:43:22.000000000 +0100
++++ ./frei0r-plugins-1.4/src/filter/facedetect/facedetect.cpp  2015-07-08 12:48:32.754615885 +0200
+@@ -259,11 +259,11 @@ private:
+     {
+         double scale = this->scale == 0? 1.0 : this->scale;
+         CvScalar colors[5] = {
+-            {{cvRound(color[0].r * 255), cvRound(color[0].g * 255), cvRound(color[0].b * 255), cvRound(alpha * 255)}},
+-            {{cvRound(color[1].r * 255), cvRound(color[1].g * 255), cvRound(color[1].b * 255), cvRound(alpha * 255)}},
+-            {{cvRound(color[2].r * 255), cvRound(color[2].g * 255), cvRound(color[2].b * 255), cvRound(alpha * 255)}},
+-            {{cvRound(color[3].r * 255), cvRound(color[3].g * 255), cvRound(color[3].b * 255), cvRound(alpha * 255)}},
+-            {{cvRound(color[4].r * 255), cvRound(color[4].g * 255), cvRound(color[4].b * 255), cvRound(alpha * 255)}},
++            CvScalar(cvRound(color[0].r * 255), cvRound(color[0].g * 255), cvRound(color[0].b * 255), cvRound(alpha * 255)),
++            CvScalar(cvRound(color[1].r * 255), cvRound(color[1].g * 255), cvRound(color[1].b * 255), cvRound(alpha * 255)),
++            CvScalar(cvRound(color[2].r * 255), cvRound(color[2].g * 255), cvRound(color[2].b * 255), cvRound(alpha * 255)),
++            CvScalar(cvRound(color[3].r * 255), cvRound(color[3].g * 255), cvRound(color[3].b * 255), cvRound(alpha * 255)),
++            CvScalar(cvRound(color[4].r * 255), cvRound(color[4].g * 255), cvRound(color[4].b * 255), cvRound(alpha * 255)),
+         };
+         
+         for (int i = 0; i < (objects ? objects->total : 0); i++)
+@@ -287,14 +287,14 @@ private:
+                 }
+             case 1:
+                 {
+-                    CvBox2D box = {{center.x, center.y}, {r->width / scale, (r->height / scale) * 1.2}, 90};
++                    CvBox2D box = CvBox2D(CvPoint2D32f(center.x, center.y), CvSize2D32f(r->width / scale, (r->height / scale) * 1.2), 90);
+                     cvEllipseBox(image, box, colors[i % 5], thickness, linetype);
+                     break;
+                 }
+             case 2:
+                 {
+-                    CvPoint pt1 = {r->x / scale, r->y / scale};
+-                    CvPoint pt2 = {(r->x + r->width) / scale, (r->y + r->height) / scale};
++                    CvPoint pt1 = CvPoint(r->x / scale, r->y / scale);
++                    CvPoint pt2 = CvPoint((r->x + r->width) / scale, (r->y + r->height) / scale);
+                     cvRectangle(image, pt1, pt2, colors[i % 5], thickness, linetype);
+                     break;
+                 }
index 1ed8d398024b5168dc8329e6b6593debb2996f15..93a9bee644e9a0db6d49cccdf79e8fe0b073cc7a 100644 (file)
@@ -31,6 +31,9 @@ src_prepare() {
                -e "/LIBDIR.*frei0r-1/s:lib:$(get_libdir):" \
                ${f} || die
 
+       # https://bugs.gentoo.org/show_bug.cgi?id=555782
+       epatch "${FILESDIR}/${P}-opencv3.patch"
+
        # https://bugs.gentoo.org/418243
        sed -i \
                -e '/set.*CMAKE_C_FLAGS/s:"): ${CMAKE_C_FLAGS}&:' \