{"action":"created","comment":{"url":"https://api.github.com/repos/opencv/opencv_contrib/pulls/comments/70278483","id":70278483,"diff_hunk":"@@ -0,0 +1,525 @@\n+/*M///////////////////////////////////////////////////////////////////////////////////////\n+ //\n+ //  IMPORTANT: READ BEFORE DOWNLOADING, COPYING, INSTALLING OR USING.\n+ //\n+ //  By downloading, copying, installing or using the software you agree to this license.\n+ //  If you do not agree to this license, do not download, install,\n+ //  copy or use the software.\n+ //\n+ //\n+ //                           License Agreement\n+ //                For Open Source Computer Vision Library\n+ //\n+ // Copyright (C) 2000-2008, Intel Corporation, all rights reserved.\n+ // Copyright (C) 2009, Willow Garage Inc., all rights reserved.\n+ // Third party copyrights are property of their respective owners.\n+ //\n+ // Redistribution and use in source and binary forms, with or without modification,\n+ // are permitted provided that the following conditions are met:\n+ //\n+ //   * Redistribution's of source code must retain the above copyright notice,\n+ //     this list of conditions and the following disclaimer.\n+ //\n+ //   * Redistribution's in binary form must reproduce the above copyright notice,\n+ //     this list of conditions and the following disclaimer in the documentation\n+ //     and/or other materials provided with the distribution.\n+ //\n+ //   * The name of the copyright holders may not be used to endorse or promote products\n+ //     derived from this software without specific prior written permission.\n+ //\n+ // This software is provided by the copyright holders and contributors \"as is\" and\n+ // any express or implied warranties, including, but not limited to, the implied\n+ // warranties of merchantability and fitness for a particular purpose are disclaimed.\n+ // In no event shall the Intel Corporation or contributors be liable for any direct,\n+ // indirect, incidental, special, exemplary, or consequential damages\n+ // (including, but not limited to, procurement of substitute goods or services;\n+ // loss of use, data, or profits; or business interruption) however caused\n+ // and on any theory of liability, whether in contract, strict liability,\n+ // or tort (including negligence or otherwise) arising in any way out of\n+ // the use of this software, even if advised of the possibility of such damage.\n+ //\n+ //M*/\n+\n+#include \"opencv2/ximgproc/edge_filter.hpp\"\n+#include \"precomp.hpp\"\n+\n+/* Disable \"from double to float\" and \"from size_t to int\" warnings.\n+ * Fixing these would make the code look ugly by introducing explicit cast all around.\n+ * Here these warning are pointless anyway.\n+ */\n+#ifdef _MSC_VER\n+#pragma warning( disable : 4305 4244 4267 4838 )\n+#endif\n+#ifdef __clang__\n+#pragma clang diagnostic ignored \"-Wshorten-64-to-32\"\n+#endif\n+\n+namespace cv\n+{\n+namespace optflow\n+{\n+namespace\n+{\n+\n+#ifndef M_SQRT2\n+const float M_SQRT2 = 1.41421356237309504880;\n+#endif\n+\n+template <typename T> inline int mathSign( T val ) { return ( T( 0 ) < val ) - ( val < T( 0 ) ); }\n+\n+/* Stable symmetric Householder reflection that gives c and s such that\n+ *   [ c  s ][a] = [d],\n+ *   [ s -c ][b]   [0]\n+ *\n+ * Output:\n+ *   c -- cosine(theta), where theta is the implicit angle of rotation\n+ *        (counter-clockwise) in a plane-rotation\n+ *   s -- sine(theta)\n+ *   r -- two-norm of [a; b]\n+ */\n+inline void symOrtho( double a, double b, double &c, double &s, double &r )\n+{\n+  if ( b == 0 )\n+  {\n+    c = mathSign( a );\n+    s = 0;\n+    r = std::abs( a );\n+  }\n+  else if ( a == 0 )\n+  {\n+    c = 0;\n+    s = mathSign( b );\n+    r = std::abs( b );\n+  }\n+  else if ( std::abs( b ) > std::abs( a ) )\n+  {\n+    const double tau = a / b;\n+    s = mathSign( b ) / std::sqrt( 1 + tau * tau );\n+    c = s * tau;\n+    r = b / s;\n+  }\n+  else\n+  {\n+    const double tau = b / a;\n+    c = mathSign( a ) / std::sqrt( 1 + tau * tau );\n+    s = c * tau;\n+    r = a / c;\n+  }\n+}\n+\n+/* Iterative LSQR algorithm for solving least squares problems.\n+ *\n+ * [1] Paige, C. C. and M. A. Saunders,\n+ * LSQR: An Algorithm for Sparse Linear Equations And Sparse Least Squares\n+ * ACM Trans. Math. Soft., Vol.8, 1982, pp. 43-71.\n+ *\n+ * Solves the following problem:\n+ *   argmin_x ||Ax - b|| + damp||x||\n+ *\n+ * Output:\n+ *   x -- approximate solution\n+ */\n+void solveLSQR( const Mat &A, const Mat &b, OutputArray xOut, const double damp = 0.0, const unsigned iter_lim = 10 )\n+{\n+  const int n = A.size().width;\n+  CV_Assert( A.size().height == b.size().height );\n+  CV_Assert( A.type() == CV_32F );\n+  CV_Assert( b.type() == CV_32F );\n+  xOut.create( n, 1, CV_32F );\n+\n+  Mat v( n, 1, CV_32F, 0.0f );\n+  Mat u = b;\n+  Mat x = xOut.getMat();\n+  x = Mat::zeros( x.size(), x.type() );\n+  double alfa = 0;\n+  double beta = cv::norm( u, NORM_L2 );\n+  Mat w( n, 1, CV_32F, 0.0f );\n+  const Mat AT = A.t();\n+\n+  if ( beta > 0 )\n+  {\n+    u *= 1 / beta;\n+    v = AT * u;\n+    alfa = cv::norm( v, NORM_L2 );\n+  }\n+\n+  if ( alfa > 0 )\n+  {\n+    v *= 1 / alfa;\n+    w = v.clone();\n+  }\n+\n+  double rhobar = alfa;\n+  double phibar = beta;\n+  if ( alfa * beta == 0 )\n+    return;\n+\n+  for ( unsigned itn = 0; itn < iter_lim; ++itn )\n+  {\n+    u *= -alfa;\n+    u += A * v;\n+    beta = cv::norm( u, NORM_L2 );\n+\n+    if ( beta > 0 )\n+    {\n+      u *= 1 / beta;\n+      v *= -beta;\n+      v += AT * u;\n+      alfa = cv::norm( v, NORM_L2 );\n+      if ( alfa > 0 )\n+        v *= 1 / alfa;\n+    }\n+\n+    double rhobar1 = sqrt( rhobar * rhobar + damp * damp );\n+    double cs1 = rhobar / rhobar1;\n+    phibar = cs1 * phibar;\n+\n+    double cs, sn, rho;\n+    symOrtho( rhobar1, beta, cs, sn, rho );\n+\n+    double theta = sn * alfa;\n+    rhobar = -cs * alfa;\n+    double phi = cs * phibar;\n+    phibar = sn * phibar;\n+\n+    double t1 = phi / rho;\n+    double t2 = -theta / rho;\n+\n+    x += t1 * w;\n+    w *= t2;\n+    w += v;\n+  }\n+}\n+\n+inline void _cpu_fillDCTSampledPoints( float *row, const Point2f &p, const Size &basisSize, const Size &size )\n+{\n+  for ( int n1 = 0; n1 < basisSize.width; ++n1 )\n+    for ( int n2 = 0; n2 < basisSize.height; ++n2 )\n+      row[n1 * basisSize.height + n2] =\n+        cosf( ( n1 * CV_PI / size.width ) * ( p.x + 0.5 ) ) * cosf( ( n2 * CV_PI / size.height ) * ( p.y + 0.5 ) );\n+}\n+\n+ocl::ProgramSource _ocl_fillDCTSampledPointsSource(\n+  \"__kernel void fillDCTSampledPoints(__global const uchar* features, int fstep, int foff, __global \"\n+  \"uchar* A, int Astep, int Aoff, int fs, int bsw, int bsh, int sw, int sh) {\"\n+  \"const int i = get_global_id(0);\"\n+  \"const int n1 = get_global_id(1);\"\n+  \"const int n2 = get_global_id(2);\"\n+  \"if (i >= fs || n1 >= bsw || n2 >= bsh) return;\"\n+  \"__global const float2* f = (__global const float2*)(features + (fstep * i + foff));\"\n+  \"__global float* a = (__global float*)(A + (Astep * i + Aoff + (n1 * bsh + n2) * sizeof(float)));\"\n+  \"const float2 p = f[0];\"\n+  \"const float pi = 3.14159265358979323846;\"","path":"modules/optflow/src/pcaflow.cpp","position":212,"original_position":212,"commit_id":"3dbbad123abb7c36aaba0dcce63f08835b34d59a","original_commit_id":"3dbbad123abb7c36aaba0dcce63f08835b34d59a","user":{"login":"sergregory","id":8317896,"avatar_url":"https://avatars.githubusercontent.com/u/8317896?v=3","gravatar_id":"","url":"https://api.github.com/users/sergregory","html_url":"https://github.com/sergregory","followers_url":"https://api.github.com/users/sergregory/followers","following_url":"https://api.github.com/users/sergregory/following{/other_user}","gists_url":"https://api.github.com/users/sergregory/gists{/gist_id}","starred_url":"https://api.github.com/users/sergregory/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/sergregory/subscriptions","organizations_url":"https://api.github.com/users/sergregory/orgs","repos_url":"https://api.github.com/users/sergregory/repos","events_url":"https://api.github.com/users/sergregory/events{/privacy}","received_events_url":"https://api.github.com/users/sergregory/received_events","type":"User","site_admin":false},"body":"It seems to me that it would be better to use stringification of the `CV_PI` macro, like that:\r\n```cpp\r\n#define STR_EXPAND_(arg) #arg\r\n#define STR_EXPAND(arg) STR_EXPAND_(arg)\r\n...\r\n  \"const float pi = \" STR_EXPAND(CV_PI) \";\"\r\n...\r\n#undef STR_EXPAND_\r\n#undef STR_EXPAND","created_at":"2016-07-11T15:20:20Z","updated_at":"2016-07-11T15:20:21Z","html_url":"https://github.com/opencv/opencv_contrib/pull/710#discussion_r70278483","pull_request_url":"https://api.github.com/repos/opencv/opencv_contrib/pulls/710","_links":{"self":{"href":"https://api.github.com/repos/opencv/opencv_contrib/pulls/comments/70278483"},"html":{"href":"https://github.com/opencv/opencv_contrib/pull/710#discussion_r70278483"},"pull_request":{"href":"https://api.github.com/repos/opencv/opencv_contrib/pulls/710"}}},"pull_request":{"url":"https://api.github.com/repos/opencv/opencv_contrib/pulls/710","id":74555080,"html_url":"https://github.com/opencv/opencv_contrib/pull/710","diff_url":"https://github.com/opencv/opencv_contrib/pull/710.diff","patch_url":"https://github.com/opencv/opencv_contrib/pull/710.patch","issue_url":"https://api.github.com/repos/opencv/opencv_contrib/issues/710","number":710,"state":"open","locked":false,"title":"[GSoC] PCAFlow implementation","user":{"login":"VladX","id":74066,"avatar_url":"https://avatars.githubusercontent.com/u/74066?v=3","gravatar_id":"","url":"https://api.github.com/users/VladX","html_url":"https://github.com/VladX","followers_url":"https://api.github.com/users/VladX/followers","following_url":"https://api.github.com/users/VladX/following{/other_user}","gists_url":"https://api.github.com/users/VladX/gists{/gist_id}","starred_url":"https://api.github.com/users/VladX/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/VladX/subscriptions","organizations_url":"https://api.github.com/users/VladX/orgs","repos_url":"https://api.github.com/users/VladX/repos","events_url":"https://api.github.com/users/VladX/events{/privacy}","received_events_url":"https://api.github.com/users/VladX/received_events","type":"User","site_admin":false},"body":"This pull request contains the basic implementation of the PCAFlow algorithm.\r\n\r\nResults from the new benchmarking script:\r\n![evaluation_results_middlebury](https://cloud.githubusercontent.com/assets/74066/16011184/04d7f1cc-318d-11e6-83f7-55efd85db779.png)\r\nUnfortunately, I wasn't able to compare more than 5 algorithms.","created_at":"2016-06-21T05:56:38Z","updated_at":"2016-07-11T15:20:21Z","closed_at":null,"merged_at":null,"merge_commit_sha":"8ed7829b62a324d89b0b9741e88f018c58da8a42","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/opencv/opencv_contrib/pulls/710/commits","review_comments_url":"https://api.github.com/repos/opencv/opencv_contrib/pulls/710/comments","review_comment_url":"https://api.github.com/repos/opencv/opencv_contrib/pulls/comments{/number}","comments_url":"https://api.github.com/repos/opencv/opencv_contrib/issues/710/comments","statuses_url":"https://api.github.com/repos/opencv/opencv_contrib/statuses/3dbbad123abb7c36aaba0dcce63f08835b34d59a","head":{"label":"VladX:optflow","ref":"optflow","sha":"3dbbad123abb7c36aaba0dcce63f08835b34d59a","user":{"login":"VladX","id":74066,"avatar_url":"https://avatars.githubusercontent.com/u/74066?v=3","gravatar_id":"","url":"https://api.github.com/users/VladX","html_url":"https://github.com/VladX","followers_url":"https://api.github.com/users/VladX/followers","following_url":"https://api.github.com/users/VladX/following{/other_user}","gists_url":"https://api.github.com/users/VladX/gists{/gist_id}","starred_url":"https://api.github.com/users/VladX/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/VladX/subscriptions","organizations_url":"https://api.github.com/users/VladX/orgs","repos_url":"https://api.github.com/users/VladX/repos","events_url":"https://api.github.com/users/VladX/events{/privacy}","received_events_url":"https://api.github.com/users/VladX/received_events","type":"User","site_admin":false},"repo":{"id":57407294,"name":"opencv_contrib","full_name":"VladX/opencv_contrib","owner":{"login":"VladX","id":74066,"avatar_url":"https://avatars.githubusercontent.com/u/74066?v=3","gravatar_id":"","url":"https://api.github.com/users/VladX","html_url":"https://github.com/VladX","followers_url":"https://api.github.com/users/VladX/followers","following_url":"https://api.github.com/users/VladX/following{/other_user}","gists_url":"https://api.github.com/users/VladX/gists{/gist_id}","starred_url":"https://api.github.com/users/VladX/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/VladX/subscriptions","organizations_url":"https://api.github.com/users/VladX/orgs","repos_url":"https://api.github.com/users/VladX/repos","events_url":"https://api.github.com/users/VladX/events{/privacy}","received_events_url":"https://api.github.com/users/VladX/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/VladX/opencv_contrib","description":"Repository for OpenCV's extra modules","fork":true,"url":"https://api.github.com/repos/VladX/opencv_contrib","forks_url":"https://api.github.com/repos/VladX/opencv_contrib/forks","keys_url":"https://api.github.com/repos/VladX/opencv_contrib/keys{/key_id}","collaborators_url":"https://api.github.com/repos/VladX/opencv_contrib/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/VladX/opencv_contrib/teams","hooks_url":"https://api.github.com/repos/VladX/opencv_contrib/hooks","issue_events_url":"https://api.github.com/repos/VladX/opencv_contrib/issues/events{/number}","events_url":"https://api.github.com/repos/VladX/opencv_contrib/events","assignees_url":"https://api.github.com/repos/VladX/opencv_contrib/assignees{/user}","branches_url":"https://api.github.com/repos/VladX/opencv_contrib/branches{/branch}","tags_url":"https://api.github.com/repos/VladX/opencv_contrib/tags","blobs_url":"https://api.github.com/repos/VladX/opencv_contrib/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/VladX/opencv_contrib/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/VladX/opencv_contrib/git/refs{/sha}","trees_url":"https://api.github.com/repos/VladX/opencv_contrib/git/trees{/sha}","statuses_url":"https://api.github.com/repos/VladX/opencv_contrib/statuses/{sha}","languages_url":"https://api.github.com/repos/VladX/opencv_contrib/languages","stargazers_url":"https://api.github.com/repos/VladX/opencv_contrib/stargazers","contributors_url":"https://api.github.com/repos/VladX/opencv_contrib/contributors","subscribers_url":"https://api.github.com/repos/VladX/opencv_contrib/subscribers","subscription_url":"https://api.github.com/repos/VladX/opencv_contrib/subscription","commits_url":"https://api.github.com/repos/VladX/opencv_contrib/commits{/sha}","git_commits_url":"https://api.github.com/repos/VladX/opencv_contrib/git/commits{/sha}","comments_url":"https://api.github.com/repos/VladX/opencv_contrib/comments{/number}","issue_comment_url":"https://api.github.com/repos/VladX/opencv_contrib/issues/comments{/number}","contents_url":"https://api.github.com/repos/VladX/opencv_contrib/contents/{+path}","compare_url":"https://api.github.com/repos/VladX/opencv_contrib/compare/{base}...{head}","merges_url":"https://api.github.com/repos/VladX/opencv_contrib/merges","archive_url":"https://api.github.com/repos/VladX/opencv_contrib/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/VladX/opencv_contrib/downloads","issues_url":"https://api.github.com/repos/VladX/opencv_contrib/issues{/number}","pulls_url":"https://api.github.com/repos/VladX/opencv_contrib/pulls{/number}","milestones_url":"https://api.github.com/repos/VladX/opencv_contrib/milestones{/number}","notifications_url":"https://api.github.com/repos/VladX/opencv_contrib/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/VladX/opencv_contrib/labels{/name}","releases_url":"https://api.github.com/repos/VladX/opencv_contrib/releases{/id}","deployments_url":"https://api.github.com/repos/VladX/opencv_contrib/deployments","created_at":"2016-04-29T19:12:58Z","updated_at":"2016-04-29T19:52:29Z","pushed_at":"2016-07-08T19:20:15Z","git_url":"git://github.com/VladX/opencv_contrib.git","ssh_url":"git@github.com:VladX/opencv_contrib.git","clone_url":"https://github.com/VladX/opencv_contrib.git","svn_url":"https://github.com/VladX/opencv_contrib","homepage":null,"size":116168,"stargazers_count":1,"watchers_count":1,"language":"C++","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":1,"forks":0,"open_issues":1,"watchers":1,"default_branch":"optflow"}},"base":{"label":"opencv:master","ref":"master","sha":"9bea717bd8c714aa48fb2cdb8fda3d73ad0bcb62","user":{"login":"opencv","id":5009934,"avatar_url":"https://avatars.githubusercontent.com/u/5009934?v=3","gravatar_id":"","url":"https://api.github.com/users/opencv","html_url":"https://github.com/opencv","followers_url":"https://api.github.com/users/opencv/followers","following_url":"https://api.github.com/users/opencv/following{/other_user}","gists_url":"https://api.github.com/users/opencv/gists{/gist_id}","starred_url":"https://api.github.com/users/opencv/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/opencv/subscriptions","organizations_url":"https://api.github.com/users/opencv/orgs","repos_url":"https://api.github.com/users/opencv/repos","events_url":"https://api.github.com/users/opencv/events{/privacy}","received_events_url":"https://api.github.com/users/opencv/received_events","type":"Organization","site_admin":false},"repo":{"id":12756992,"name":"opencv_contrib","full_name":"opencv/opencv_contrib","owner":{"login":"opencv","id":5009934,"avatar_url":"https://avatars.githubusercontent.com/u/5009934?v=3","gravatar_id":"","url":"https://api.github.com/users/opencv","html_url":"https://github.com/opencv","followers_url":"https://api.github.com/users/opencv/followers","following_url":"https://api.github.com/users/opencv/following{/other_user}","gists_url":"https://api.github.com/users/opencv/gists{/gist_id}","starred_url":"https://api.github.com/users/opencv/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/opencv/subscriptions","organizations_url":"https://api.github.com/users/opencv/orgs","repos_url":"https://api.github.com/users/opencv/repos","events_url":"https://api.github.com/users/opencv/events{/privacy}","received_events_url":"https://api.github.com/users/opencv/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/opencv/opencv_contrib","description":"Repository for OpenCV's extra modules","fork":false,"url":"https://api.github.com/repos/opencv/opencv_contrib","forks_url":"https://api.github.com/repos/opencv/opencv_contrib/forks","keys_url":"https://api.github.com/repos/opencv/opencv_contrib/keys{/key_id}","collaborators_url":"https://api.github.com/repos/opencv/opencv_contrib/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/opencv/opencv_contrib/teams","hooks_url":"https://api.github.com/repos/opencv/opencv_contrib/hooks","issue_events_url":"https://api.github.com/repos/opencv/opencv_contrib/issues/events{/number}","events_url":"https://api.github.com/repos/opencv/opencv_contrib/events","assignees_url":"https://api.github.com/repos/opencv/opencv_contrib/assignees{/user}","branches_url":"https://api.github.com/repos/opencv/opencv_contrib/branches{/branch}","tags_url":"https://api.github.com/repos/opencv/opencv_contrib/tags","blobs_url":"https://api.github.com/repos/opencv/opencv_contrib/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/opencv/opencv_contrib/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/opencv/opencv_contrib/git/refs{/sha}","trees_url":"https://api.github.com/repos/opencv/opencv_contrib/git/trees{/sha}","statuses_url":"https://api.github.com/repos/opencv/opencv_contrib/statuses/{sha}","languages_url":"https://api.github.com/repos/opencv/opencv_contrib/languages","stargazers_url":"https://api.github.com/repos/opencv/opencv_contrib/stargazers","contributors_url":"https://api.github.com/repos/opencv/opencv_contrib/contributors","subscribers_url":"https://api.github.com/repos/opencv/opencv_contrib/subscribers","subscription_url":"https://api.github.com/repos/opencv/opencv_contrib/subscription","commits_url":"https://api.github.com/repos/opencv/opencv_contrib/commits{/sha}","git_commits_url":"https://api.github.com/repos/opencv/opencv_contrib/git/commits{/sha}","comments_url":"https://api.github.com/repos/opencv/opencv_contrib/comments{/number}","issue_comment_url":"https://api.github.com/repos/opencv/opencv_contrib/issues/comments{/number}","contents_url":"https://api.github.com/repos/opencv/opencv_contrib/contents/{+path}","compare_url":"https://api.github.com/repos/opencv/opencv_contrib/compare/{base}...{head}","merges_url":"https://api.github.com/repos/opencv/opencv_contrib/merges","archive_url":"https://api.github.com/repos/opencv/opencv_contrib/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/opencv/opencv_contrib/downloads","issues_url":"https://api.github.com/repos/opencv/opencv_contrib/issues{/number}","pulls_url":"https://api.github.com/repos/opencv/opencv_contrib/pulls{/number}","milestones_url":"https://api.github.com/repos/opencv/opencv_contrib/milestones{/number}","notifications_url":"https://api.github.com/repos/opencv/opencv_contrib/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/opencv/opencv_contrib/labels{/name}","releases_url":"https://api.github.com/repos/opencv/opencv_contrib/releases{/id}","deployments_url":"https://api.github.com/repos/opencv/opencv_contrib/deployments","created_at":"2013-09-11T13:28:04Z","updated_at":"2016-07-11T06:28:38Z","pushed_at":"2016-07-08T19:20:16Z","git_url":"git://github.com/opencv/opencv_contrib.git","ssh_url":"git@github.com:opencv/opencv_contrib.git","clone_url":"https://github.com/opencv/opencv_contrib.git","svn_url":"https://github.com/opencv/opencv_contrib","homepage":null,"size":177318,"stargazers_count":857,"watchers_count":857,"language":"C++","has_issues":true,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":1109,"mirror_url":null,"open_issues_count":168,"forks":1109,"open_issues":168,"watchers":857,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/opencv/opencv_contrib/pulls/710"},"html":{"href":"https://github.com/opencv/opencv_contrib/pull/710"},"issue":{"href":"https://api.github.com/repos/opencv/opencv_contrib/issues/710"},"comments":{"href":"https://api.github.com/repos/opencv/opencv_contrib/issues/710/comments"},"review_comments":{"href":"https://api.github.com/repos/opencv/opencv_contrib/pulls/710/comments"},"review_comment":{"href":"https://api.github.com/repos/opencv/opencv_contrib/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/opencv/opencv_contrib/pulls/710/commits"},"statuses":{"href":"https://api.github.com/repos/opencv/opencv_contrib/statuses/3dbbad123abb7c36aaba0dcce63f08835b34d59a"}}}}
{"actor":{"display_login":"sergregory"}}