GitHub PullRequestReviewCommentEvent at 2014-10-06 18:14:01
Repository: opencv
Actor: vbystricky
Payload: {"action":"created","comment":{"url":"https://api.github.com/repos/Itseez/opencv/pulls/comments/18474216","id":18474216,"diff_hunk":"@@ -0,0 +1,340 @@\n+// This file is part of OpenCV project.\n+// It is subject to the license terms in the LICENSE file found in the top-level directory\n+// of this distribution and at http://opencv.org/license.html.\n+\n+// Copyright (C) 2014, Itseez, Inc., all rights reserved.\n+// Third party copyrights are property of their respective owners.\n+\n+#ifdef MAKE_POINTS_LIST\n+\n+__kernel void make_point_list(__global const uchar * src_ptr, int src_step, int src_offset, int src_rows, int src_cols,\n+                              __global uchar * list_ptr, int list_step, int list_offset, __global int* global_offset)\n+{\n+    int x = get_local_id(0);\n+    int y = get_group_id(1);\n+\n+    __local int l_index, l_offset;\n+    __local int l_points[LOCAL_SIZE];\n+    __global const uchar * src = src_ptr + mad24(y, src_step, src_offset);\n+    __global int * list = (__global int*)(list_ptr + list_offset);\n+\n+    if (x == 0)\n+        l_index = 0;\n+\n+    barrier(CLK_LOCAL_MEM_FENCE);\n+\n+    if (y < src_rows)\n+    {\n+        for (int i=x; i < src_cols; i+=GROUP_SIZE)\n+        {\n+            if (src[i])\n+            {\n+                int val = (y << 16) | i;\n+                int index = atomic_inc(&l_index);\n+                l_points[index] = val;\n+            }\n+        }\n+    }\n+\n+    barrier(CLK_LOCAL_MEM_FENCE);\n+\n+    if (x == 0)\n+        l_offset = atomic_add(global_offset, l_index);\n+\n+    barrier(CLK_LOCAL_MEM_FENCE);\n+\n+    list += l_offset;\n+    for (int i=x; i < l_index; i+=GROUP_SIZE)\n+    {\n+        list[i] = l_points[i];\n+    }\n+}\n+\n+#elif defined FILL_ACCUM_GLOBAL\n+\n+__kernel void fill_accum_global(__global const uchar * list_ptr, int list_step, int list_offset,\n+                                __global uchar * accum_ptr, int accum_step, int accum_offset, int accum_rows, int accum_cols,\n+                                int total_points, float irho, float theta, int numrho, int numangle)\n+{\n+    int theta_idx = get_global_id(1);\n+    int count_idx = get_global_id(0);\n+    int glob_size = get_global_size(0);\n+    float cosVal;\n+    float sinVal = sincos(theta * ((float)theta_idx), &cosVal);\n+    sinVal *= irho;\n+    cosVal *= irho;\n+\n+    __global const int * list = (__global const int*)(list_ptr + list_offset);\n+    __global int* accum = (__global int*)(accum_ptr + mad24(theta_idx + 1, accum_step, accum_offset));\n+    const int shift = (numrho - 1) / 2;\n+\n+    if (theta_idx < numangle)\n+    {\n+        for (int i = count_idx; i < total_points; i += glob_size)\n+        {\n+            const int val = list[i];\n+            const int x = (val & 0xFFFF);\n+            const int y = (val >> 16) & 0xFFFF;\n+\n+            int r = convert_int_rte(x * cosVal + y * sinVal) + shift;\n+            atomic_inc(accum + r + 1);\n+        }\n+    }\n+}\n+\n+#elif defined FILL_ACCUM_LOCAL\n+\n+__kernel void fill_accum_local(__global const uchar * list_ptr, int list_step, int list_offset,\n+                               __global uchar * accum_ptr, int accum_step, int accum_offset, int accum_rows, int accum_cols,\n+                               int total_points, float irho, float theta, int numrho, int numangle)\n+{\n+    int theta_idx = get_group_id(1);\n+    int count_idx = get_local_id(0);\n+\n+    if (theta_idx > 0 && theta_idx < numangle + 1)\n+    {\n+        float cosVal;\n+        float sinVal = sincos(theta * (float) (theta_idx-1), &cosVal);\n+        sinVal *= irho;\n+        cosVal *= irho;\n+\n+        __local int l_accum[BUFFER_SIZE];\n+        for (int i=count_idx; i<BUFFER_SIZE; i+=LOCAL_SIZE)\n+            l_accum[i] = 0;\n+\n+        barrier(CLK_LOCAL_MEM_FENCE);\n+\n+        __global const int * list = (__global const int*)(list_ptr + list_offset);\n+        const int shift = (numrho - 1) / 2;\n+\n+        for (int i = count_idx; i < total_points; i += LOCAL_SIZE)\n+        {\n+            const int point = list[i];\n+            const int x = (point & 0xFFFF);\n+            const int y = point >> 16;\n+\n+            int r = convert_int_rte(mad(x, cosVal, y * sinVal)) + shift;\n+            atomic_inc(l_accum + r + 1);\n+        }\n+\n+        barrier(CLK_LOCAL_MEM_FENCE);\n+\n+        __global int* accum = (__global int*)(accum_ptr + mad24(theta_idx, accum_step, accum_offset));\n+        for (int i=count_idx; i<BUFFER_SIZE; i+=LOCAL_SIZE)\n+            accum[i] = l_accum[i];\n+    }\n+    else if (theta_idx < numangle + 2)\n+    {\n+        __global int* accum = (__global int*)(accum_ptr + mad24(theta_idx, accum_step, accum_offset));\n+        for (int i=count_idx; i<BUFFER_SIZE; i+=LOCAL_SIZE)\n+            accum[i] = 0;\n+    }\n+}\n+\n+#elif defined GET_LINES\n+\n+#define ACCUM(ptr) *((__global int*)(ptr))\n+\n+__kernel void get_lines(__global uchar * accum_ptr, int accum_step, int accum_offset, int accum_rows, int accum_cols,\n+                         __global uchar * lines_ptr, int lines_step, int lines_offset, __global int* lines_index_ptr,\n+                         int linesMax, int threshold, float rho, float theta)\n+{\n+    int x0 = get_global_id(0);\n+    int y = get_global_id(1);\n+    int gl_size = get_global_size(0);\n+\n+    if (y < accum_rows-2)\n+    {\n+        __global uchar* accum = accum_ptr + mad24(y+1, accum_step, mad24(x0+1, (int) sizeof(int), accum_offset));\n+        __global float2* lines = (__global float2*)(lines_ptr + lines_offset);\n+        __global int* lines_index = lines_index_ptr + 1;\n+\n+        for (int x=x0; x<accum_cols-2; x+=gl_size)\n+        {\n+            int curVote = ACCUM(accum);\n+\n+            if (curVote > threshold && curVote > ACCUM(accum - sizeof(int)) && curVote >= ACCUM(accum + sizeof(int)) &&\n+                curVote > ACCUM(accum - accum_step) && curVote >= ACCUM(accum + accum_step))\n+            {\n+                int index = atomic_inc(lines_index);\n+\n+                if (index < linesMax)\n+                {\n+                    float radius = (x - (accum_cols - 3) * 0.5f) * rho;\n+                    float angle = y * theta;\n+\n+                    lines[index] = (float2)(radius, angle);\n+                }\n+            }\n+\n+            accum += gl_size * (int) sizeof(int);\n+        }\n+    }\n+}\n+\n+#elif GET_LINES_PROBABOLISTIC\n+\n+#define ACCUM(ptr) *((__global int*)(ptr))\n+\n+__kernel void get_lines(__global const uchar * accum_ptr, int accum_step, int accum_offset, int accum_rows, int accum_cols,\n+                        __global const uchar * src_ptr, int src_step, int src_offset, int src_rows, int src_cols,\n+                        __global uchar * lines_ptr, int lines_step, int lines_offset, __global int* lines_index_ptr,\n+                        int linesMax, int threshold, int lineLength, int lineGap, float rho, float theta)\n+{\n+    int x = get_global_id(0);\n+    int y = get_global_id(1);\n+\n+    __global uchar* accum = accum_ptr + mad24(y+1, accum_step, mad24(x+1, (int) sizeof(int), accum_offset));\n+    __global int4* lines = (__global int4*)(lines_ptr + lines_offset);\n+    __global int* lines_index = lines_index_ptr + 1;\n+\n+    int curVote = ACCUM(accum);\n+\n+    if (curVote >= threshold &&\n+        curVote > ACCUM(accum - accum_step - sizeof(int)) &&\n+        curVote > ACCUM(accum - accum_step) &&\n+        curVote > ACCUM(accum - accum_step + sizeof(int)) &&\n+        curVote > ACCUM(accum - sizeof(int)) &&\n+        curVote > ACCUM(accum + sizeof(int)) &&\n+        curVote > ACCUM(accum + accum_step - sizeof(int)) &&\n+        curVote > ACCUM(accum + accum_step) &&\n+        curVote > ACCUM(accum + accum_step + sizeof(int)))\n+    {\n+        const float radius = (x - (accum_cols - 2 - 1) * 0.5f) * rho;\n+        const float angle = y * theta;\n+\n+        float cosa;\n+        float sina = sincos(angle, &cosa);\n+\n+        float2 p0 = (float2)(cosa * radius, sina * radius);\n+        float2 dir = (float2)(-sina, cosa);\n+\n+        float2 pb[4] = { (float2)(-1, -1), (float2)(-1, -1), (float2)(-1, -1), (float2)(-1, -1) };\n+        float a;\n+\n+        if (dir.x != 0)\n+        {\n+            a = -p0.x / dir.x;\n+            pb[0].x = 0;\n+            pb[0].y = p0.y + a * dir.y;\n+\n+            a = (src_cols - 1 - p0.x) / dir.x;\n+            pb[1].x = src_cols - 1;\n+            pb[1].y = p0.y + a * dir.y;\n+        }\n+        if (dir.y != 0)\n+        {\n+            a = -p0.y / dir.y;\n+            pb[2].x = p0.x + a * dir.x;\n+            pb[2].y = 0;\n+\n+            a = (src_rows - 1 - p0.y) / dir.y;\n+            pb[3].x = p0.x + a * dir.x;\n+            pb[3].y = src_rows - 1;\n+        }\n+\n+        if (pb[0].x == 0 && (pb[0].y >= 0 && pb[0].y < src_rows))\n+        {\n+            p0 = pb[0];\n+            if (dir.x < 0)\n+                dir = -dir;\n+        }\n+        else if (pb[1].x == src_cols - 1 && (pb[0].y >= 0 && pb[0].y < src_rows))","path":"modules/imgproc/src/opencl/hough_lines.cl","position":242,"original_position":242,"commit_id":"eaf5a163b155650d87d7b22d6831ef36e94a2649","original_commit_id":"eaf5a163b155650d87d7b22d6831ef36e94a2649","user":{"login":"vbystricky","id":6037768,"avatar_url":"https://avatars.githubusercontent.com/u/6037768?v=2","gravatar_id":"","url":"https://api.github.com/users/vbystricky","html_url":"https://github.com/vbystricky","followers_url":"https://api.github.com/users/vbystricky/followers","following_url":"https://api.github.com/users/vbystricky/following{/other_user}","gists_url":"https://api.github.com/users/vbystricky/gists{/gist_id}","starred_url":"https://api.github.com/users/vbystricky/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/vbystricky/subscriptions","organizations_url":"https://api.github.com/users/vbystricky/orgs","repos_url":"https://api.github.com/users/vbystricky/repos","events_url":"https://api.github.com/users/vbystricky/events{/privacy}","received_events_url":"https://api.github.com/users/vbystricky/received_events","type":"User","site_admin":false},"body":"Are you sure `(pb[0].y >= 0 && pb[0].y < src_rows))` not `pb[1]`?","created_at":"2014-10-06T18:14:01Z","updated_at":"2014-10-06T18:14:01Z","html_url":"https://github.com/Itseez/opencv/pull/3279#discussion_r18474216","pull_request_url":"https://api.github.com/repos/Itseez/opencv/pulls/3279","_links":{"self":{"href":"https://api.github.com/repos/Itseez/opencv/pulls/comments/18474216"},"html":{"href":"https://github.com/Itseez/opencv/pull/3279#discussion_r18474216"},"pull_request":{"href":"https://api.github.com/repos/Itseez/opencv/pulls/3279"}}},"pull_request":{"url":"https://api.github.com/repos/Itseez/opencv/pulls/3279","id":21930438,"html_url":"https://github.com/Itseez/opencv/pull/3279","diff_url":"https://github.com/Itseez/opencv/pull/3279.diff","patch_url":"https://github.com/Itseez/opencv/pull/3279.patch","issue_url":"https://api.github.com/repos/Itseez/opencv/issues/3279","number":3279,"state":"open","locked":false,"title":"OCL: HoughLines and HoughLinesP","user":{"login":"akarsakov","id":5549721,"avatar_url":"https://avatars.githubusercontent.com/u/5549721?v=2","gravatar_id":"","url":"https://api.github.com/users/akarsakov","html_url":"https://github.com/akarsakov","followers_url":"https://api.github.com/users/akarsakov/followers","following_url":"https://api.github.com/users/akarsakov/following{/other_user}","gists_url":"https://api.github.com/users/akarsakov/gists{/gist_id}","starred_url":"https://api.github.com/users/akarsakov/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akarsakov/subscriptions","organizations_url":"https://api.github.com/users/akarsakov/orgs","repos_url":"https://api.github.com/users/akarsakov/repos","events_url":"https://api.github.com/users/akarsakov/events{/privacy}","received_events_url":"https://api.github.com/users/akarsakov/received_events","type":"User","site_admin":false},"body":"Added OCL version of HoughLines and HoughLinesP to T-API, based on CUDA implementation.\r\nMerge after Itseez/opencv#3278.\r\n\r\n**Performance report**\r\nhttp://ocl.itseez.com/intel/export/perf/pr/3279/report/\r\n\r\ncheck_regression=*OCL*HoughLines*\r\ntest_filter=*OCL*HoughLines* \r\ntest_modules=imgproc\r\nbuild_examples=OFF\r\n","created_at":"2014-09-29T12:22:15Z","updated_at":"2014-10-06T18:14:01Z","closed_at":null,"merged_at":null,"merge_commit_sha":"e974d299cfbb015a8d7a47c3417abea285a88f63","assignee":{"login":"vbystricky","id":6037768,"avatar_url":"https://avatars.githubusercontent.com/u/6037768?v=2","gravatar_id":"","url":"https://api.github.com/users/vbystricky","html_url":"https://github.com/vbystricky","followers_url":"https://api.github.com/users/vbystricky/followers","following_url":"https://api.github.com/users/vbystricky/following{/other_user}","gists_url":"https://api.github.com/users/vbystricky/gists{/gist_id}","starred_url":"https://api.github.com/users/vbystricky/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/vbystricky/subscriptions","organizations_url":"https://api.github.com/users/vbystricky/orgs","repos_url":"https://api.github.com/users/vbystricky/repos","events_url":"https://api.github.com/users/vbystricky/events{/privacy}","received_events_url":"https://api.github.com/users/vbystricky/received_events","type":"User","site_admin":false},"milestone":null,"commits_url":"https://api.github.com/repos/Itseez/opencv/pulls/3279/commits","review_comments_url":"https://api.github.com/repos/Itseez/opencv/pulls/3279/comments","review_comment_url":"https://api.github.com/repos/Itseez/opencv/pulls/comments/{number}","comments_url":"https://api.github.com/repos/Itseez/opencv/issues/3279/comments","statuses_url":"https://api.github.com/repos/Itseez/opencv/statuses/eaf5a163b155650d87d7b22d6831ef36e94a2649","head":{"label":"akarsakov:ocl_houghlines","ref":"ocl_houghlines","sha":"eaf5a163b155650d87d7b22d6831ef36e94a2649","user":{"login":"akarsakov","id":5549721,"avatar_url":"https://avatars.githubusercontent.com/u/5549721?v=2","gravatar_id":"","url":"https://api.github.com/users/akarsakov","html_url":"https://github.com/akarsakov","followers_url":"https://api.github.com/users/akarsakov/followers","following_url":"https://api.github.com/users/akarsakov/following{/other_user}","gists_url":"https://api.github.com/users/akarsakov/gists{/gist_id}","starred_url":"https://api.github.com/users/akarsakov/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akarsakov/subscriptions","organizations_url":"https://api.github.com/users/akarsakov/orgs","repos_url":"https://api.github.com/users/akarsakov/repos","events_url":"https://api.github.com/users/akarsakov/events{/privacy}","received_events_url":"https://api.github.com/users/akarsakov/received_events","type":"User","site_admin":false},"repo":{"id":13122533,"name":"opencv","full_name":"akarsakov/opencv","owner":{"login":"akarsakov","id":5549721,"avatar_url":"https://avatars.githubusercontent.com/u/5549721?v=2","gravatar_id":"","url":"https://api.github.com/users/akarsakov","html_url":"https://github.com/akarsakov","followers_url":"https://api.github.com/users/akarsakov/followers","following_url":"https://api.github.com/users/akarsakov/following{/other_user}","gists_url":"https://api.github.com/users/akarsakov/gists{/gist_id}","starred_url":"https://api.github.com/users/akarsakov/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/akarsakov/subscriptions","organizations_url":"https://api.github.com/users/akarsakov/orgs","repos_url":"https://api.github.com/users/akarsakov/repos","events_url":"https://api.github.com/users/akarsakov/events{/privacy}","received_events_url":"https://api.github.com/users/akarsakov/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/akarsakov/opencv","description":"Open Source Computer Vision Library","fork":true,"url":"https://api.github.com/repos/akarsakov/opencv","forks_url":"https://api.github.com/repos/akarsakov/opencv/forks","keys_url":"https://api.github.com/repos/akarsakov/opencv/keys{/key_id}","collaborators_url":"https://api.github.com/repos/akarsakov/opencv/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/akarsakov/opencv/teams","hooks_url":"https://api.github.com/repos/akarsakov/opencv/hooks","issue_events_url":"https://api.github.com/repos/akarsakov/opencv/issues/events{/number}","events_url":"https://api.github.com/repos/akarsakov/opencv/events","assignees_url":"https://api.github.com/repos/akarsakov/opencv/assignees{/user}","branches_url":"https://api.github.com/repos/akarsakov/opencv/branches{/branch}","tags_url":"https://api.github.com/repos/akarsakov/opencv/tags","blobs_url":"https://api.github.com/repos/akarsakov/opencv/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/akarsakov/opencv/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/akarsakov/opencv/git/refs{/sha}","trees_url":"https://api.github.com/repos/akarsakov/opencv/git/trees{/sha}","statuses_url":"https://api.github.com/repos/akarsakov/opencv/statuses/{sha}","languages_url":"https://api.github.com/repos/akarsakov/opencv/languages","stargazers_url":"https://api.github.com/repos/akarsakov/opencv/stargazers","contributors_url":"https://api.github.com/repos/akarsakov/opencv/contributors","subscribers_url":"https://api.github.com/repos/akarsakov/opencv/subscribers","subscription_url":"https://api.github.com/repos/akarsakov/opencv/subscription","commits_url":"https://api.github.com/repos/akarsakov/opencv/commits{/sha}","git_commits_url":"https://api.github.com/repos/akarsakov/opencv/git/commits{/sha}","comments_url":"https://api.github.com/repos/akarsakov/opencv/comments{/number}","issue_comment_url":"https://api.github.com/repos/akarsakov/opencv/issues/comments/{number}","contents_url":"https://api.github.com/repos/akarsakov/opencv/contents/{+path}","compare_url":"https://api.github.com/repos/akarsakov/opencv/compare/{base}...{head}","merges_url":"https://api.github.com/repos/akarsakov/opencv/merges","archive_url":"https://api.github.com/repos/akarsakov/opencv/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/akarsakov/opencv/downloads","issues_url":"https://api.github.com/repos/akarsakov/opencv/issues{/number}","pulls_url":"https://api.github.com/repos/akarsakov/opencv/pulls{/number}","milestones_url":"https://api.github.com/repos/akarsakov/opencv/milestones{/number}","notifications_url":"https://api.github.com/repos/akarsakov/opencv/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/akarsakov/opencv/labels{/name}","releases_url":"https://api.github.com/repos/akarsakov/opencv/releases{/id}","created_at":"2013-09-26T13:06:22Z","updated_at":"2014-07-02T12:17:49Z","pushed_at":"2014-09-30T07:04:28Z","git_url":"git://github.com/akarsakov/opencv.git","ssh_url":"git@github.com:akarsakov/opencv.git","clone_url":"https://github.com/akarsakov/opencv.git","svn_url":"https://github.com/akarsakov/opencv","homepage":"opencv.org","size":428850,"stargazers_count":0,"watchers_count":0,"language":"C++","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":1,"mirror_url":null,"open_issues_count":0,"forks":1,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"Itseez:master","ref":"master","sha":"148e64d4bc29087473147bb96f87afb8c6a045d7","user":{"login":"Itseez","id":1786446,"avatar_url":"https://avatars.githubusercontent.com/u/1786446?v=2","gravatar_id":"","url":"https://api.github.com/users/Itseez","html_url":"https://github.com/Itseez","followers_url":"https://api.github.com/users/Itseez/followers","following_url":"https://api.github.com/users/Itseez/following{/other_user}","gists_url":"https://api.github.com/users/Itseez/gists{/gist_id}","starred_url":"https://api.github.com/users/Itseez/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Itseez/subscriptions","organizations_url":"https://api.github.com/users/Itseez/orgs","repos_url":"https://api.github.com/users/Itseez/repos","events_url":"https://api.github.com/users/Itseez/events{/privacy}","received_events_url":"https://api.github.com/users/Itseez/received_events","type":"Organization","site_admin":false},"repo":{"id":5108051,"name":"opencv","full_name":"Itseez/opencv","owner":{"login":"Itseez","id":1786446,"avatar_url":"https://avatars.githubusercontent.com/u/1786446?v=2","gravatar_id":"","url":"https://api.github.com/users/Itseez","html_url":"https://github.com/Itseez","followers_url":"https://api.github.com/users/Itseez/followers","following_url":"https://api.github.com/users/Itseez/following{/other_user}","gists_url":"https://api.github.com/users/Itseez/gists{/gist_id}","starred_url":"https://api.github.com/users/Itseez/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Itseez/subscriptions","organizations_url":"https://api.github.com/users/Itseez/orgs","repos_url":"https://api.github.com/users/Itseez/repos","events_url":"https://api.github.com/users/Itseez/events{/privacy}","received_events_url":"https://api.github.com/users/Itseez/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/Itseez/opencv","description":"Open Source Computer Vision Library","fork":false,"url":"https://api.github.com/repos/Itseez/opencv","forks_url":"https://api.github.com/repos/Itseez/opencv/forks","keys_url":"https://api.github.com/repos/Itseez/opencv/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Itseez/opencv/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Itseez/opencv/teams","hooks_url":"https://api.github.com/repos/Itseez/opencv/hooks","issue_events_url":"https://api.github.com/repos/Itseez/opencv/issues/events{/number}","events_url":"https://api.github.com/repos/Itseez/opencv/events","assignees_url":"https://api.github.com/repos/Itseez/opencv/assignees{/user}","branches_url":"https://api.github.com/repos/Itseez/opencv/branches{/branch}","tags_url":"https://api.github.com/repos/Itseez/opencv/tags","blobs_url":"https://api.github.com/repos/Itseez/opencv/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Itseez/opencv/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Itseez/opencv/git/refs{/sha}","trees_url":"https://api.github.com/repos/Itseez/opencv/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Itseez/opencv/statuses/{sha}","languages_url":"https://api.github.com/repos/Itseez/opencv/languages","stargazers_url":"https://api.github.com/repos/Itseez/opencv/stargazers","contributors_url":"https://api.github.com/repos/Itseez/opencv/contributors","subscribers_url":"https://api.github.com/repos/Itseez/opencv/subscribers","subscription_url":"https://api.github.com/repos/Itseez/opencv/subscription","commits_url":"https://api.github.com/repos/Itseez/opencv/commits{/sha}","git_commits_url":"https://api.github.com/repos/Itseez/opencv/git/commits{/sha}","comments_url":"https://api.github.com/repos/Itseez/opencv/comments{/number}","issue_comment_url":"https://api.github.com/repos/Itseez/opencv/issues/comments/{number}","contents_url":"https://api.github.com/repos/Itseez/opencv/contents/{+path}","compare_url":"https://api.github.com/repos/Itseez/opencv/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Itseez/opencv/merges","archive_url":"https://api.github.com/repos/Itseez/opencv/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Itseez/opencv/downloads","issues_url":"https://api.github.com/repos/Itseez/opencv/issues{/number}","pulls_url":"https://api.github.com/repos/Itseez/opencv/pulls{/number}","milestones_url":"https://api.github.com/repos/Itseez/opencv/milestones{/number}","notifications_url":"https://api.github.com/repos/Itseez/opencv/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Itseez/opencv/labels{/name}","releases_url":"https://api.github.com/repos/Itseez/opencv/releases{/id}","created_at":"2012-07-19T09:40:17Z","updated_at":"2014-10-06T15:59:23Z","pushed_at":"2014-10-06T14:43:36Z","git_url":"git://github.com/Itseez/opencv.git","ssh_url":"git@github.com:Itseez/opencv.git","clone_url":"https://github.com/Itseez/opencv.git","svn_url":"https://github.com/Itseez/opencv","homepage":"opencv.org","size":1086216,"stargazers_count":3464,"watchers_count":3464,"language":"C++","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":3233,"mirror_url":null,"open_issues_count":35,"forks":3233,"open_issues":35,"watchers":3464,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/Itseez/opencv/pulls/3279"},"html":{"href":"https://github.com/Itseez/opencv/pull/3279"},"issue":{"href":"https://api.github.com/repos/Itseez/opencv/issues/3279"},"comments":{"href":"https://api.github.com/repos/Itseez/opencv/issues/3279/comments"},"review_comments":{"href":"https://api.github.com/repos/Itseez/opencv/pulls/3279/comments"},"review_comment":{"href":"https://api.github.com/repos/Itseez/opencv/pulls/comments/{number}"},"commits":{"href":"https://api.github.com/repos/Itseez/opencv/pulls/3279/commits"},"statuses":{"href":"https://api.github.com/repos/Itseez/opencv/statuses/eaf5a163b155650d87d7b22d6831ef36e94a2649"}}}}