summaryrefslogtreecommitdiff
path: root/debian/patches/fix_ftbfs_with_gcc6
diff options
context:
space:
mode:
Diffstat (limited to 'debian/patches/fix_ftbfs_with_gcc6')
-rw-r--r--debian/patches/fix_ftbfs_with_gcc671
1 files changed, 71 insertions, 0 deletions
diff --git a/debian/patches/fix_ftbfs_with_gcc6 b/debian/patches/fix_ftbfs_with_gcc6
new file mode 100644
index 0000000..0706faa
--- /dev/null
+++ b/debian/patches/fix_ftbfs_with_gcc6
@@ -0,0 +1,71 @@
+Description: gcc-6 build fixes, cherry-picked from Fedora
+From: https://pkgs.fedoraproject.org/cgit/rpms/opencv.git/commit/?id=ca7da00ea608b62859a640493a1cd6c0f5802550
+Author: Sérgio M. Basto <sergio@serjux.com>
+Last-Update: 2016-10-04
+
+--- opencv-2.4.9.1+dfsg.orig/modules/contrib/src/chamfermatching.cpp
++++ opencv-2.4.9.1+dfsg/modules/contrib/src/chamfermatching.cpp
+@@ -966,10 +966,8 @@ void ChamferMatcher::Matching::computeDi
+ for (int y=0;y<h;++y) {
+ for (int x=0;x<w;++x) {
+ // initialize
+- if (&annotate_img!=NULL) {
+- annotate_img.at<Vec2i>(y,x)[0]=x;
+- annotate_img.at<Vec2i>(y,x)[1]=y;
+- }
++ annotate_img.at<Vec2i>(y,x)[0]=x;
++ annotate_img.at<Vec2i>(y,x)[1]=y;
+
+ uchar edge_val = edges_img.at<uchar>(y,x);
+ if( (edge_val!=0) ) {
+@@ -1013,10 +1011,8 @@ void ChamferMatcher::Matching::computeDi
+ dist_img.at<float>(ny,nx) = dist;
+ q.push(std::make_pair(nx,ny));
+
+- if (&annotate_img!=NULL) {
+- annotate_img.at<Vec2i>(ny,nx)[0]=annotate_img.at<Vec2i>(y,x)[0];
+- annotate_img.at<Vec2i>(ny,nx)[1]=annotate_img.at<Vec2i>(y,x)[1];
+- }
++ annotate_img.at<Vec2i>(ny,nx)[0]=annotate_img.at<Vec2i>(y,x)[0];
++ annotate_img.at<Vec2i>(ny,nx)[1]=annotate_img.at<Vec2i>(y,x)[1];
+ }
+ }
+ }
+@@ -1107,26 +1103,22 @@ ChamferMatcher::Match* ChamferMatcher::M
+
+ float cost = (sum_distance/truncate_)/addr.size();
+
++ float* optr = orientation_img.ptr<float>(y)+x;
++ float sum_orientation = 0;
++ int cnt_orientation = 0;
+
+- if (&orientation_img!=NULL) {
+- float* optr = orientation_img.ptr<float>(y)+x;
+- float sum_orientation = 0;
+- int cnt_orientation = 0;
+-
+- for (size_t i=0;i<addr.size();++i) {
++ for (size_t i=0;i<addr.size();++i) {
+
+- if(addr[i] < (orientation_img.cols*orientation_img.rows) - (offset.y*orientation_img.cols + offset.x)){
+- if (tpl->orientations[i]>=-CV_PI && (*(optr+addr[i]))>=-CV_PI) {
+- sum_orientation += orientation_diff(tpl->orientations[i], (*(optr+addr[i])));
+- cnt_orientation++;
+- }
++ if(addr[i] < (orientation_img.cols*orientation_img.rows) - (offset.y*orientation_img.cols + offset.x)){
++ if (tpl->orientations[i]>=-CV_PI && (*(optr+addr[i]))>=-CV_PI) {
++ sum_orientation += orientation_diff(tpl->orientations[i], (*(optr+addr[i])));
++ cnt_orientation++;
+ }
+ }
++ }
+
+- if (cnt_orientation>0) {
+- cost = (float)(beta*cost+alpha*(sum_orientation/(2*CV_PI))/cnt_orientation);
+- }
+-
++ if (cnt_orientation>0) {
++ cost = (float)(beta*cost+alpha*(sum_orientation/(2*CV_PI))/cnt_orientation);
+ }
+
+ if(cost > 0){