{"action":"created","comment":{"url":"https://api.github.com/repos/opencv/opencv/pulls/comments/87761303","pull_request_review_id":8359405,"id":87761303,"diff_hunk":"@@ -0,0 +1,429 @@\n+#include <iostream>\n+#include <stdexcept>\n+\n+//OpenVX includes\n+#include <VX/vx.h>\n+\n+//OpenCV includes\n+//#include <opencv2/opencv.hpp>\n+#include \"opencv2/core.hpp\"\n+#include \"opencv2/imgproc.hpp\"\n+#include \"opencv2/imgcodecs.hpp\"\n+#include \"opencv2/highgui.hpp\"\n+\n+#ifndef VX_VERSION_1_1\n+const vx_enum VX_IMAGE_FORMAT = VX_IMAGE_ATTRIBUTE_FORMAT;\n+const vx_enum VX_IMAGE_WIDTH  = VX_IMAGE_ATTRIBUTE_WIDTH;\n+const vx_enum VX_IMAGE_HEIGHT = VX_IMAGE_ATTRIBUTE_HEIGHT;\n+const vx_enum VX_MEMORY_TYPE_HOST = VX_IMPORT_TYPE_HOST;\n+const vx_enum VX_MEMORY_TYPE_NONE = VX_IMPORT_TYPE_NONE;\n+const vx_enum VX_THRESHOLD_THRESHOLD_VALUE = VX_THRESHOLD_ATTRIBUTE_THRESHOLD_VALUE;\n+typedef uintptr_t vx_map_id;\n+#endif\n+\n+//simple wrappers around VX calls\n+namespace ovx\n+{\n+vx_image createImage(vx_context context, vx_uint32 width, vx_uint32 height, vx_df_image format)\n+{\n+    vx_status status;\n+    vx_image ovxImage = vxCreateImage(context, width, height, format);\n+    status = vxGetStatus((vx_reference)ovxImage);\n+    if (status != VX_SUCCESS) throw std::runtime_error(\"Failed to create image\");\n+    return ovxImage;\n+}\n+\n+vx_image createVirtualImage(vx_graph graph, vx_uint32 width, vx_uint32 height, vx_df_image format)\n+{\n+    vx_status status;\n+    vx_image ovxImage = vxCreateVirtualImage(graph, width, height, format);\n+    status = vxGetStatus((vx_reference)ovxImage);\n+    if (status != VX_SUCCESS) throw std::runtime_error(\"Failed to create virtual image\");\n+    return ovxImage;\n+}\n+\n+vx_image createImageFromHandle(vx_context context,\n+                               vx_df_image color,\n+                               vx_imagepatch_addressing_t addrs[],\n+                               void *const ptrs[],\n+                               vx_enum memory_type)\n+{\n+    vx_status status;\n+#ifdef VX_VERSION_1_1\n+    vx_image ovxImage = vxCreateImageFromHandle(context, color, addrs, ptrs, memory_type);\n+#else\n+    vx_image ovxImage = vxCreateImageFromHandle(context, color, addrs, (void**)ptrs, memory_type);\n+#endif\n+    status = vxGetStatus((vx_reference)ovxImage);\n+    if (status != VX_SUCCESS) throw std::runtime_error(\"Failed to create image from handle\");\n+    return ovxImage;\n+}\n+\n+//not supported until OpenVX 1.1\n+#ifdef VX_VERSION_1_1\n+void swapImageHandle(vx_image image,\n+                     void* const new_ptrs[],\n+                     void* prev_ptrs[],\n+                     vx_size num_planes)\n+{\n+    vx_status status;\n+    status = vxSwapImageHandle(image, new_ptrs, prev_ptrs, num_planes);\n+    if (status != VX_SUCCESS) throw std::runtime_error(\"Failed to swap image handle\");\n+}\n+#endif\n+\n+void getValidRegionImage(vx_image image, vx_rectangle_t *rect)\n+{\n+    vx_status status;\n+    status = vxGetValidRegionImage(image, rect);\n+    if (status != VX_SUCCESS) throw std::runtime_error(\"Failed to get valid region\");\n+}\n+\n+void mapImagePatch(vx_image image,\n+                   const vx_rectangle_t *rect,\n+                   vx_uint32 plane_index,\n+                   vx_map_id *map_id,\n+                   vx_imagepatch_addressing_t *addr,\n+                   void **ptr,\n+                   vx_enum usage,\n+                   vx_enum mem_type,\n+                   vx_uint32 flags)\n+{\n+#ifdef VX_VERSION_1_1\n+    vx_status status;\n+    status = vxMapImagePatch(image, rect, plane_index, map_id, addr, ptr, usage, mem_type, flags);\n+    if (status != VX_SUCCESS) throw std::runtime_error(\"Failed to map image patch\");\n+#else\n+    (void) image; (void) rect; (void) plane_index; (void) map_id; (void) addr; (void) ptr;\n+    (void) usage; (void) mem_type; (void) flags;\n+    throw std::runtime_error(\"Not supported in OpenVX v1.0\");\n+#endif\n+}\n+\n+void unmapImagePatch(vx_image image,\n+                     vx_map_id map_id)\n+{\n+#ifdef VX_VERSION_1_1\n+    vx_status status;\n+    status = vxUnmapImagePatch(image, map_id);\n+    if (status != VX_SUCCESS) throw std::runtime_error(\"Failed to unmap image patch\");\n+#else\n+    (void) image; (void) map_id;\n+    throw std::runtime_error(\"Not supported in OpenVX v1.0\");\n+#endif\n+}\n+\n+void copyImagePatch(vx_image image,\n+                    vx_rectangle_t *image_rect,\n+                    vx_uint32 image_plane_index,\n+                    vx_imagepatch_addressing_t *user_addr,\n+                    void * user_ptr,\n+                    vx_enum usage,\n+                    vx_enum user_mem_type)\n+{\n+    vx_status status;\n+#ifdef VX_VERSION_1_1\n+    status = vxCopyImagePatch(image, image_rect, image_plane_index, user_addr, user_ptr, usage, user_mem_type);\n+    if (status != VX_SUCCESS) throw std::runtime_error(\"Failed to copy image patch\");\n+#else\n+    (void) user_mem_type;\n+    if (user_ptr == NULL) throw std::runtime_error(\"Pointer to user data must be non-null!\");\n+    status = vxAccessImagePatch(image, image_rect, image_plane_index, user_addr, &user_ptr, usage);\n+    if (status != VX_SUCCESS) throw std::runtime_error(\"Failed to access image patch\");\n+    status = vxCommitImagePatch(image, image_rect, image_plane_index, user_addr, user_ptr);\n+    if (status != VX_SUCCESS) throw std::runtime_error(\"Failed to commit image patch\");\n+#endif\n+}\n+\n+void queryImage(vx_image image, vx_enum attribute, void *ptr, vx_size size)\n+{\n+    vx_status status;\n+    status = vxQueryImage(image, attribute, ptr, size);\n+    if (status != VX_SUCCESS) throw std::runtime_error(\"Failed to query image\");\n+}\n+}\n+\n+\n+vx_image convertCvMatToVxImage(vx_context context, cv::Mat image, bool toCopy)\n+{\n+    if (!(!image.empty() && image.dims <= 2 && image.channels() == 1))\n+        throw std::runtime_error(\"Invalid format\");\n+\n+    vx_uint32 width  = image.cols;\n+    vx_uint32 height = image.rows;\n+\n+    vx_df_image color;\n+    switch (image.depth())\n+    {\n+    case CV_8U:\n+        color = VX_DF_IMAGE_U8;\n+        break;\n+    case CV_16U:\n+        color = VX_DF_IMAGE_U16;\n+        break;\n+    case CV_16S:\n+        color = VX_DF_IMAGE_S16;\n+        break;\n+    case CV_32S:\n+        color = VX_DF_IMAGE_S32;\n+        break;\n+    default:\n+        throw std::runtime_error(\"Invalid format\");\n+        break;\n+    }\n+\n+    vx_imagepatch_addressing_t addr;\n+    addr.dim_x = width;\n+    addr.dim_y = height;\n+    addr.stride_x = (vx_uint32)image.elemSize();\n+    addr.stride_y = (vx_uint32)image.step.p[0];\n+    vx_uint8* ovxData = image.data;\n+\n+    vx_image ovxImage;\n+    if (toCopy)\n+    {\n+        ovxImage = ovx::createImage(context, width, height, color);\n+        vx_rectangle_t rect;\n+        ovx::getValidRegionImage(ovxImage, &rect);\n+        ovx::copyImagePatch(ovxImage, &rect, 0, &addr, ovxData, VX_WRITE_ONLY, VX_MEMORY_TYPE_HOST);\n+    }\n+    else\n+    {\n+        ovxImage = ovx::createImageFromHandle(context, color, &addr, (void*const*)&ovxData, VX_MEMORY_TYPE_HOST);\n+    }\n+\n+    return ovxImage;\n+}\n+\n+\n+cv::Mat copyVxImageToCvMat(vx_image ovxImage)\n+{\n+    vx_df_image df_image = 0;\n+    vx_uint32 width, height;\n+    ovx::queryImage(ovxImage, VX_IMAGE_FORMAT, &df_image, sizeof(vx_df_image));\n+    ovx::queryImage(ovxImage, VX_IMAGE_WIDTH, &width, sizeof(vx_uint32));\n+    ovx::queryImage(ovxImage, VX_IMAGE_HEIGHT, &height, sizeof(vx_uint32));\n+\n+    if (!(width > 0 && height > 0)) throw std::runtime_error(\"Invalid format\");\n+\n+    int depth;\n+    switch (df_image)\n+    {\n+    case VX_DF_IMAGE_U8:\n+        depth = CV_8U;\n+        break;\n+    case VX_DF_IMAGE_U16:\n+        depth = CV_16U;\n+        break;\n+    case VX_DF_IMAGE_S16:\n+        depth = CV_16S;\n+        break;\n+    case VX_DF_IMAGE_S32:\n+        depth = CV_32S;\n+        break;\n+    default:\n+        throw std::runtime_error(\"Invalid format\");\n+        break;\n+    }\n+\n+    cv::Mat image(height, width, CV_MAKE_TYPE(depth, 1));\n+\n+    vx_rectangle_t rect;\n+    rect.start_x = rect.start_y = 0;\n+    rect.end_x = width; rect.end_y = height;\n+\n+    vx_imagepatch_addressing_t addr;\n+    addr.dim_x = width;\n+    addr.dim_y = height;\n+    addr.stride_x = (vx_uint32)image.elemSize();\n+    addr.stride_y = (vx_uint32)image.step.p[0];\n+    vx_uint8* matData = image.data;\n+\n+    ovx::copyImagePatch(ovxImage, &rect, 0, &addr, matData, VX_READ_ONLY, VX_MEMORY_TYPE_HOST);\n+\n+    return image;\n+}\n+\n+\n+void swapVxImage(vx_image ovxImage)\n+{\n+#ifdef VX_VERSION_1_1\n+    vx_memory_type_e memType;\n+    ovx::queryImage(ovxImage, VX_IMAGE_MEMORY_TYPE, &memType, sizeof(vx_memory_type_e));\n+    if (memType == VX_MEMORY_TYPE_NONE)\n+    {\n+        //was created by copying user data\n+        throw std::runtime_error(\"Image wasn't created from user handle\");\n+    }\n+    else\n+    {\n+        //was created from user handle\n+        ovx::swapImageHandle(ovxImage, NULL, NULL, 0);\n+    }\n+#else\n+    //not supported until OpenVX 1.1\n+    (void) ovxImage;\n+#endif\n+}\n+\n+\n+vx_status createProcessingGraph(vx_context context, vx_image inputImage, vx_image outputImage, vx_graph& graph)\n+{\n+    vx_status status;\n+    graph = vxCreateGraph(context);\n+    status = vxGetStatus((vx_reference)graph);\n+    if (status != VX_SUCCESS) return status;\n+\n+    // Intermediate images\n+    vx_image\n+        gb = ovx::createVirtualImage(graph, 0, 0, VX_DF_IMAGE_VIRT),\n+        gx = ovx::createVirtualImage(graph, 0, 0, VX_DF_IMAGE_VIRT),\n+        gy = ovx::createVirtualImage(graph, 0, 0, VX_DF_IMAGE_VIRT),\n+        mag = ovx::createVirtualImage(graph, 0, 0, VX_DF_IMAGE_VIRT),\n+        ang = ovx::createVirtualImage(graph, 0, 0, VX_DF_IMAGE_VIRT),\n+\n+        mag8 = ovx::createVirtualImage(graph, 0, 0, VX_DF_IMAGE_U8),\n+        thra = ovx::createVirtualImage(graph, 0, 0, VX_DF_IMAGE_VIRT),\n+        thrm = ovx::createVirtualImage(graph, 0, 0, VX_DF_IMAGE_VIRT),\n+        thrv = ovx::createVirtualImage(graph, 0, 0, VX_DF_IMAGE_VIRT);\n+\n+    // Constants\n+    vx_uint32 threshValue = 50;\n+    vx_threshold thresh = vxCreateThreshold(context, VX_THRESHOLD_TYPE_BINARY, VX_TYPE_UINT8);\n+    vxSetThresholdAttribute(thresh, VX_THRESHOLD_THRESHOLD_VALUE,\n+                            &threshValue, sizeof(threshValue));\n+\n+    vx_uint32 threshAngValue = 127;\n+    vx_threshold threshAng = vxCreateThreshold(context, VX_THRESHOLD_TYPE_BINARY, VX_TYPE_UINT8);\n+    vxSetThresholdAttribute(threshAng, VX_THRESHOLD_THRESHOLD_VALUE,\n+                            &threshAngValue, sizeof(threshAngValue));\n+\n+    vx_uint32 threshMagValue = 127;\n+    vx_threshold threshMag = vxCreateThreshold(context, VX_THRESHOLD_TYPE_BINARY, VX_TYPE_UINT8);\n+    vxSetThresholdAttribute(threshMag, VX_THRESHOLD_THRESHOLD_VALUE,\n+                            &threshMagValue, sizeof(threshMagValue));\n+\n+    int shiftVal = 0;\n+    vx_scalar shift = vxCreateScalar(context, VX_TYPE_INT32, &shiftVal);\n+\n+    // Sequence of meaningless image operations\n+    vx_node nodes[] = {\n+        vxGaussian3x3Node(graph, inputImage, gb),\n+        vxSobel3x3Node(graph, gb, gx, gy),\n+        vxMagnitudeNode(graph, gx, gy, mag),\n+        vxPhaseNode(graph, gx, gy, ang),\n+        vxConvertDepthNode(graph, mag, mag8, VX_CONVERT_POLICY_SATURATE, shift),\n+        vxThresholdNode(graph, ang,  threshAng, thra),\n+        vxThresholdNode(graph, mag8, threshMag, thrm),\n+        vxAndNode(graph, thra, thrm, thrv),\n+        vxAndNode(graph, inputImage, thrv, outputImage),\n+    };\n+\n+    for (size_t i = 0; i < sizeof(nodes) / sizeof(vx_node); i++)\n+    {\n+        status = vxGetStatus((vx_reference)nodes[i]);\n+        if (status != VX_SUCCESS) return status;\n+    }\n+\n+    // Graph verification","path":"samples/openvx/no_wrappers.cpp","position":328,"original_position":328,"commit_id":"acf638466c17ddd7d46fec419b694f1c814e5438","original_commit_id":"acf638466c17ddd7d46fec419b694f1c814e5438","user":{"login":"apavlenko","id":2344952,"avatar_url":"https://avatars.githubusercontent.com/u/2344952?v=3","gravatar_id":"","url":"https://api.github.com/users/apavlenko","html_url":"https://github.com/apavlenko","followers_url":"https://api.github.com/users/apavlenko/followers","following_url":"https://api.github.com/users/apavlenko/following{/other_user}","gists_url":"https://api.github.com/users/apavlenko/gists{/gist_id}","starred_url":"https://api.github.com/users/apavlenko/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/apavlenko/subscriptions","organizations_url":"https://api.github.com/users/apavlenko/orgs","repos_url":"https://api.github.com/users/apavlenko/repos","events_url":"https://api.github.com/users/apavlenko/events{/privacy}","received_events_url":"https://api.github.com/users/apavlenko/received_events","type":"User","site_admin":false},"body":"useless comment :)","created_at":"2016-11-14T09:16:01Z","updated_at":"2016-11-14T09:16:01Z","html_url":"https://github.com/opencv/opencv/pull/7163#discussion_r87761303","pull_request_url":"https://api.github.com/repos/opencv/opencv/pulls/7163","_links":{"self":{"href":"https://api.github.com/repos/opencv/opencv/pulls/comments/87761303"},"html":{"href":"https://github.com/opencv/opencv/pull/7163#discussion_r87761303"},"pull_request":{"href":"https://api.github.com/repos/opencv/opencv/pulls/7163"}}},"pull_request":{"url":"https://api.github.com/repos/opencv/opencv/pulls/7163","id":82577736,"html_url":"https://github.com/opencv/opencv/pull/7163","diff_url":"https://github.com/opencv/opencv/pull/7163.diff","patch_url":"https://github.com/opencv/opencv/pull/7163.patch","issue_url":"https://api.github.com/repos/opencv/opencv/issues/7163","number":7163,"state":"open","locked":false,"title":"OpenVX sample","user":{"login":"savuor","id":10323511,"avatar_url":"https://avatars.githubusercontent.com/u/10323511?v=3","gravatar_id":"","url":"https://api.github.com/users/savuor","html_url":"https://github.com/savuor","followers_url":"https://api.github.com/users/savuor/followers","following_url":"https://api.github.com/users/savuor/following{/other_user}","gists_url":"https://api.github.com/users/savuor/gists{/gist_id}","starred_url":"https://api.github.com/users/savuor/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/savuor/subscriptions","organizations_url":"https://api.github.com/users/savuor/orgs","repos_url":"https://api.github.com/users/savuor/repos","events_url":"https://api.github.com/users/savuor/events{/privacy}","received_events_url":"https://api.github.com/users/savuor/received_events","type":"User","site_admin":false},"body":"Basic version of OpenVX interoperability sample\n","created_at":"2016-08-24T16:45:37Z","updated_at":"2016-11-14T09:16:01Z","closed_at":null,"merged_at":null,"merge_commit_sha":"8f94d6995625bd215dbcbc5a41afdd7d8485dc4b","assignee":{"login":"apavlenko","id":2344952,"avatar_url":"https://avatars.githubusercontent.com/u/2344952?v=3","gravatar_id":"","url":"https://api.github.com/users/apavlenko","html_url":"https://github.com/apavlenko","followers_url":"https://api.github.com/users/apavlenko/followers","following_url":"https://api.github.com/users/apavlenko/following{/other_user}","gists_url":"https://api.github.com/users/apavlenko/gists{/gist_id}","starred_url":"https://api.github.com/users/apavlenko/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/apavlenko/subscriptions","organizations_url":"https://api.github.com/users/apavlenko/orgs","repos_url":"https://api.github.com/users/apavlenko/repos","events_url":"https://api.github.com/users/apavlenko/events{/privacy}","received_events_url":"https://api.github.com/users/apavlenko/received_events","type":"User","site_admin":false},"assignees":[{"login":"apavlenko","id":2344952,"avatar_url":"https://avatars.githubusercontent.com/u/2344952?v=3","gravatar_id":"","url":"https://api.github.com/users/apavlenko","html_url":"https://github.com/apavlenko","followers_url":"https://api.github.com/users/apavlenko/followers","following_url":"https://api.github.com/users/apavlenko/following{/other_user}","gists_url":"https://api.github.com/users/apavlenko/gists{/gist_id}","starred_url":"https://api.github.com/users/apavlenko/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/apavlenko/subscriptions","organizations_url":"https://api.github.com/users/apavlenko/orgs","repos_url":"https://api.github.com/users/apavlenko/repos","events_url":"https://api.github.com/users/apavlenko/events{/privacy}","received_events_url":"https://api.github.com/users/apavlenko/received_events","type":"User","site_admin":false}],"milestone":null,"commits_url":"https://api.github.com/repos/opencv/opencv/pulls/7163/commits","review_comments_url":"https://api.github.com/repos/opencv/opencv/pulls/7163/comments","review_comment_url":"https://api.github.com/repos/opencv/opencv/pulls/comments{/number}","comments_url":"https://api.github.com/repos/opencv/opencv/issues/7163/comments","statuses_url":"https://api.github.com/repos/opencv/opencv/statuses/acf638466c17ddd7d46fec419b694f1c814e5438","head":{"label":"savuor:openvx_sample","ref":"openvx_sample","sha":"acf638466c17ddd7d46fec419b694f1c814e5438","user":{"login":"savuor","id":10323511,"avatar_url":"https://avatars.githubusercontent.com/u/10323511?v=3","gravatar_id":"","url":"https://api.github.com/users/savuor","html_url":"https://github.com/savuor","followers_url":"https://api.github.com/users/savuor/followers","following_url":"https://api.github.com/users/savuor/following{/other_user}","gists_url":"https://api.github.com/users/savuor/gists{/gist_id}","starred_url":"https://api.github.com/users/savuor/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/savuor/subscriptions","organizations_url":"https://api.github.com/users/savuor/orgs","repos_url":"https://api.github.com/users/savuor/repos","events_url":"https://api.github.com/users/savuor/events{/privacy}","received_events_url":"https://api.github.com/users/savuor/received_events","type":"User","site_admin":false},"repo":{"id":60094359,"name":"opencv","full_name":"savuor/opencv","owner":{"login":"savuor","id":10323511,"avatar_url":"https://avatars.githubusercontent.com/u/10323511?v=3","gravatar_id":"","url":"https://api.github.com/users/savuor","html_url":"https://github.com/savuor","followers_url":"https://api.github.com/users/savuor/followers","following_url":"https://api.github.com/users/savuor/following{/other_user}","gists_url":"https://api.github.com/users/savuor/gists{/gist_id}","starred_url":"https://api.github.com/users/savuor/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/savuor/subscriptions","organizations_url":"https://api.github.com/users/savuor/orgs","repos_url":"https://api.github.com/users/savuor/repos","events_url":"https://api.github.com/users/savuor/events{/privacy}","received_events_url":"https://api.github.com/users/savuor/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/savuor/opencv","description":"Open Source Computer Vision Library","fork":true,"url":"https://api.github.com/repos/savuor/opencv","forks_url":"https://api.github.com/repos/savuor/opencv/forks","keys_url":"https://api.github.com/repos/savuor/opencv/keys{/key_id}","collaborators_url":"https://api.github.com/repos/savuor/opencv/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/savuor/opencv/teams","hooks_url":"https://api.github.com/repos/savuor/opencv/hooks","issue_events_url":"https://api.github.com/repos/savuor/opencv/issues/events{/number}","events_url":"https://api.github.com/repos/savuor/opencv/events","assignees_url":"https://api.github.com/repos/savuor/opencv/assignees{/user}","branches_url":"https://api.github.com/repos/savuor/opencv/branches{/branch}","tags_url":"https://api.github.com/repos/savuor/opencv/tags","blobs_url":"https://api.github.com/repos/savuor/opencv/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/savuor/opencv/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/savuor/opencv/git/refs{/sha}","trees_url":"https://api.github.com/repos/savuor/opencv/git/trees{/sha}","statuses_url":"https://api.github.com/repos/savuor/opencv/statuses/{sha}","languages_url":"https://api.github.com/repos/savuor/opencv/languages","stargazers_url":"https://api.github.com/repos/savuor/opencv/stargazers","contributors_url":"https://api.github.com/repos/savuor/opencv/contributors","subscribers_url":"https://api.github.com/repos/savuor/opencv/subscribers","subscription_url":"https://api.github.com/repos/savuor/opencv/subscription","commits_url":"https://api.github.com/repos/savuor/opencv/commits{/sha}","git_commits_url":"https://api.github.com/repos/savuor/opencv/git/commits{/sha}","comments_url":"https://api.github.com/repos/savuor/opencv/comments{/number}","issue_comment_url":"https://api.github.com/repos/savuor/opencv/issues/comments{/number}","contents_url":"https://api.github.com/repos/savuor/opencv/contents/{+path}","compare_url":"https://api.github.com/repos/savuor/opencv/compare/{base}...{head}","merges_url":"https://api.github.com/repos/savuor/opencv/merges","archive_url":"https://api.github.com/repos/savuor/opencv/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/savuor/opencv/downloads","issues_url":"https://api.github.com/repos/savuor/opencv/issues{/number}","pulls_url":"https://api.github.com/repos/savuor/opencv/pulls{/number}","milestones_url":"https://api.github.com/repos/savuor/opencv/milestones{/number}","notifications_url":"https://api.github.com/repos/savuor/opencv/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/savuor/opencv/labels{/name}","releases_url":"https://api.github.com/repos/savuor/opencv/releases{/id}","deployments_url":"https://api.github.com/repos/savuor/opencv/deployments","created_at":"2016-05-31T13:59:50Z","updated_at":"2016-05-31T14:00:02Z","pushed_at":"2016-11-11T19:11:08Z","git_url":"git://github.com/savuor/opencv.git","ssh_url":"git@github.com:savuor/opencv.git","clone_url":"https://github.com/savuor/opencv.git","svn_url":"https://github.com/savuor/opencv","homepage":"opencv.org","size":430007,"stargazers_count":0,"watchers_count":0,"language":"C++","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"opencv:master","ref":"master","sha":"acaa1e1b296f115000349f012a0cb782f7f3e84c","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":5108051,"name":"opencv","full_name":"opencv/opencv","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","description":"Open Source Computer Vision Library","fork":false,"url":"https://api.github.com/repos/opencv/opencv","forks_url":"https://api.github.com/repos/opencv/opencv/forks","keys_url":"https://api.github.com/repos/opencv/opencv/keys{/key_id}","collaborators_url":"https://api.github.com/repos/opencv/opencv/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/opencv/opencv/teams","hooks_url":"https://api.github.com/repos/opencv/opencv/hooks","issue_events_url":"https://api.github.com/repos/opencv/opencv/issues/events{/number}","events_url":"https://api.github.com/repos/opencv/opencv/events","assignees_url":"https://api.github.com/repos/opencv/opencv/assignees{/user}","branches_url":"https://api.github.com/repos/opencv/opencv/branches{/branch}","tags_url":"https://api.github.com/repos/opencv/opencv/tags","blobs_url":"https://api.github.com/repos/opencv/opencv/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/opencv/opencv/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/opencv/opencv/git/refs{/sha}","trees_url":"https://api.github.com/repos/opencv/opencv/git/trees{/sha}","statuses_url":"https://api.github.com/repos/opencv/opencv/statuses/{sha}","languages_url":"https://api.github.com/repos/opencv/opencv/languages","stargazers_url":"https://api.github.com/repos/opencv/opencv/stargazers","contributors_url":"https://api.github.com/repos/opencv/opencv/contributors","subscribers_url":"https://api.github.com/repos/opencv/opencv/subscribers","subscription_url":"https://api.github.com/repos/opencv/opencv/subscription","commits_url":"https://api.github.com/repos/opencv/opencv/commits{/sha}","git_commits_url":"https://api.github.com/repos/opencv/opencv/git/commits{/sha}","comments_url":"https://api.github.com/repos/opencv/opencv/comments{/number}","issue_comment_url":"https://api.github.com/repos/opencv/opencv/issues/comments{/number}","contents_url":"https://api.github.com/repos/opencv/opencv/contents/{+path}","compare_url":"https://api.github.com/repos/opencv/opencv/compare/{base}...{head}","merges_url":"https://api.github.com/repos/opencv/opencv/merges","archive_url":"https://api.github.com/repos/opencv/opencv/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/opencv/opencv/downloads","issues_url":"https://api.github.com/repos/opencv/opencv/issues{/number}","pulls_url":"https://api.github.com/repos/opencv/opencv/pulls{/number}","milestones_url":"https://api.github.com/repos/opencv/opencv/milestones{/number}","notifications_url":"https://api.github.com/repos/opencv/opencv/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/opencv/opencv/labels{/name}","releases_url":"https://api.github.com/repos/opencv/opencv/releases{/id}","deployments_url":"https://api.github.com/repos/opencv/opencv/deployments","created_at":"2012-07-19T09:40:17Z","updated_at":"2016-11-14T09:11:24Z","pushed_at":"2016-11-14T08:42:25Z","git_url":"git://github.com/opencv/opencv.git","ssh_url":"git@github.com:opencv/opencv.git","clone_url":"https://github.com/opencv/opencv.git","svn_url":"https://github.com/opencv/opencv","homepage":"opencv.org","size":1087982,"stargazers_count":12017,"watchers_count":12017,"language":"C++","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":9754,"mirror_url":null,"open_issues_count":1033,"forks":9754,"open_issues":1033,"watchers":12017,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/opencv/opencv/pulls/7163"},"html":{"href":"https://github.com/opencv/opencv/pull/7163"},"issue":{"href":"https://api.github.com/repos/opencv/opencv/issues/7163"},"comments":{"href":"https://api.github.com/repos/opencv/opencv/issues/7163/comments"},"review_comments":{"href":"https://api.github.com/repos/opencv/opencv/pulls/7163/comments"},"review_comment":{"href":"https://api.github.com/repos/opencv/opencv/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/opencv/opencv/pulls/7163/commits"},"statuses":{"href":"https://api.github.com/repos/opencv/opencv/statuses/acf638466c17ddd7d46fec419b694f1c814e5438"}}}}
{"actor":{"display_login":"apavlenko"}}