{"action":"created","comment":{"url":"https://api.github.com/repos/opencv/opencv/pulls/comments/208192517","pull_request_review_id":143950294,"id":208192517,"node_id":"MDI0OlB1bGxSZXF1ZXN0UmV2aWV3Q29tbWVudDIwODE5MjUxNw==","diff_hunk":"@@ -0,0 +1,348 @@\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) 2018, Intel Corporation, all rights reserved.\n+// Third party copyrights are property of their respective owners.\n+\n+#include \"../precomp.hpp\"\n+\n+#ifdef HAVE_PROTOBUF\n+\n+#include <iostream>\n+#include <fstream>\n+#include <string>\n+#include <limits>\n+#include <algorithm>\n+\n+\n+#if defined(__GNUC__) && __GNUC__ >= 5\n+#pragma GCC diagnostic push\n+#pragma GCC diagnostic ignored \"-Wsuggest-override\"\n+#endif\n+#include \"opencv-onnx.pb.h\"\n+#if defined(__GNUC__) && __GNUC__ >= 5\n+#pragma GCC diagnostic pop\n+#endif\n+\n+namespace cv {\n+namespace dnn {\n+CV__DNN_EXPERIMENTAL_NS_BEGIN\n+\n+\n+class ONNXImporter\n+{\n+    opencv_onnx::ModelProto model_proto;\n+\n+    std::map<std::string, Mat> getGraphTensors(\n+                                    const opencv_onnx::GraphProto& graph_proto);\n+    Mat getBlob(const opencv_onnx::NodeProto& node_proto, const std::map<std::string, Mat>& constBlobs, int index);\n+\n+    LayerParams getLayerParams(const opencv_onnx::NodeProto& node_proto);\n+\n+public:\n+\n+    ONNXImporter(const char *onnxFile)\n+    {\n+        std::fstream input(onnxFile, std::ios::in | std::ios::binary);\n+\n+        if (!model_proto.ParseFromIstream(&input))\n+            CV_Error(Error::StsUnsupportedFormat, \"Failed to parse onnx model\");\n+    }\n+\n+    void populateNet(Net dstNet);\n+};\n+\n+\n+void releaseONNXTensor(opencv_onnx::TensorProto& tensor_proto)\n+{\n+    if (!tensor_proto.raw_data().empty()) {\n+        delete tensor_proto.release_raw_data();\n+    }\n+}\n+\n+Mat getMatFromTensor(const opencv_onnx::TensorProto& tensor_proto)\n+{\n+    opencv_onnx::TensorProto_DataType datatype = tensor_proto.data_type();\n+    CV_Assert(!tensor_proto.raw_data().empty());\n+    char* val = const_cast<char*>(tensor_proto.raw_data().c_str());\n+\n+    std::vector<int> sizes;\n+    for (int i = 0; i < tensor_proto.dims_size(); i++) {\n+            sizes.push_back(tensor_proto.dims(i));\n+    }\n+    Mat blob;\n+    if (datatype == opencv_onnx::TensorProto_DataType_FLOAT)\n+        Mat(sizes, CV_32FC1, val).copyTo(blob);\n+\n+    else if (datatype == opencv_onnx::TensorProto_DataType_INT64)\n+    {\n+        blob.create(sizes, CV_32SC1);\n+\n+        int64_t* src = reinterpret_cast<int64_t*>(val);\n+        int32_t* dst = reinterpret_cast<int32_t*>(blob.data);\n+\n+        for (int i = 0; i < blob.total(); i++) {\n+            if (src[i] < std::numeric_limits<int32_t>::min() || src[i] > std::numeric_limits<int32_t>::max()) {\n+                CV_Error(Error::StsOutOfRange, \"Input is out of OpenCV 32S range\");\n+            }\n+            dst[i] = saturate_cast<int32_t>(src[i]);\n+        }\n+    }\n+    else\n+        CV_Error(Error::StsUnsupportedFormat,\n+        \"Unsupported data type: \" + opencv_onnx::TensorProto_DataType_Name(datatype));\n+\n+    return blob;\n+}\n+\n+std::map<std::string, Mat> ONNXImporter::getGraphTensors(\n+                                        const opencv_onnx::GraphProto& graph_proto)\n+{\n+  opencv_onnx::TensorProto tensor_proto;\n+  std::map<std::string, Mat> layers_weights;\n+\n+  for (int i = 0; i < graph_proto.initializer_size(); i++)\n+  {\n+    tensor_proto = graph_proto.initializer(i);\n+    Mat mat = getMatFromTensor(tensor_proto);\n+    releaseONNXTensor(tensor_proto);\n+    layers_weights.insert(std::make_pair(tensor_proto.name(), mat));\n+  }\n+  return layers_weights;\n+}\n+\n+LayerParams ONNXImporter::getLayerParams(const opencv_onnx::NodeProto& node_proto)\n+{\n+    LayerParams lp;\n+    for(int i = 0; i < node_proto.attribute_size(); i++)\n+    {\n+        opencv_onnx::AttributeProto attribute_proto = node_proto.attribute(i);\n+        std::string attribute_name = attribute_proto.name();\n+\n+        if(attribute_name == \"kernel_shape\")\n+        {\n+            CV_Assert(attribute_proto.ints_size() == 2);\n+            lp.set(\"kernel_h\",  attribute_proto.ints(0));\n+            lp.set(\"kernel_w\",  attribute_proto.ints(1));\n+        }\n+        else if(attribute_name == \"strides\")\n+        {\n+            CV_Assert(attribute_proto.ints_size() == 2);\n+            lp.set(\"stride_h\",  attribute_proto.ints(0));\n+            lp.set(\"stride_w\",  attribute_proto.ints(1));\n+        }\n+        else if(attribute_name == \"pads\")\n+        {\n+            CV_Assert(attribute_proto.ints_size() >= 2);\n+            lp.set(\"pad_h\", attribute_proto.ints(0));\n+            lp.set(\"pad_w\", attribute_proto.ints(1));\n+        }\n+        else if (attribute_proto.has_i())\n+        {\n+            lp.set(attribute_name, attribute_proto.i());\n+        }\n+        else if (attribute_proto.has_f())\n+        {\n+            lp.set(attribute_name, attribute_proto.f());\n+        }\n+        else if (attribute_proto.has_s())\n+        {\n+            lp.set(attribute_name, attribute_proto.s());\n+        }\n+        else if (attribute_proto.floats_size() > 0)\n+        {\n+            lp.set(attribute_name, DictValue::arrayReal(\n+                (float*)attribute_proto.mutable_floats(), attribute_proto.floats_size()));\n+        }\n+        else if (attribute_proto.ints_size() > 0)\n+        {\n+                lp.set(attribute_proto.name(), DictValue::arrayInt(\n+                    (int*)attribute_proto.mutable_ints(), attribute_proto.ints_size()));\n+        }\n+        else if (attribute_proto.has_t() || attribute_proto.has_g() ||\n+                    attribute_proto.strings_size() > 0 ||\n+                        attribute_proto.tensors_size() > 0 ||\n+                            attribute_proto.graphs_size() > 0)\n+        {\n+                CV_Error(Error::StsNotImplemented, \"Unexpected attribute type\");\n+        }\n+    }\n+    return lp;\n+}\n+\n+Mat ONNXImporter::getBlob(const opencv_onnx::NodeProto& node_proto,\n+                    const std::map<std::string, Mat>& constBlobs, int index)\n+{\n+    std::map<std::string, Mat>::const_iterator constBlob;\n+    constBlob = constBlobs.find(node_proto.input(index) );\n+    if (constBlob == constBlobs.end()) {\n+        CV_Error(Error::StsObjectNotFound,\n+             \"Blob \" + node_proto.input(index) + \" not found in const blobs\");\n+    }\n+    return constBlob->second;\n+}\n+\n+void ONNXImporter::populateNet(Net dstNet)\n+{\n+    CV_Assert(model_proto.has_graph());\n+    opencv_onnx::GraphProto graph_proto = model_proto.graph();\n+    std::map<std::string, Mat> constBlobs = getGraphTensors(graph_proto);\n+\n+    std::string framework_name;\n+    if (model_proto.has_producer_name()) {\n+        framework_name = model_proto.producer_name();\n+    }\n+\n+    std::map<std::string, int> layer_id;\n+    std::map<std::string, int>::iterator layerId, currentId;\n+\n+    int count = 0;\n+    for (int j = 0; j < graph_proto.input_size(); j++)","path":"modules/dnn/src/onnx/onnx_importer.cpp","position":null,"original_position":201,"commit_id":"ba1ad2caac4f9513b96021fc37a1bd6e11ce72dc","original_commit_id":"55956956d9f40d16bda73e45043645e0cb5cec5c","user":{"login":"l-bat","id":22346860,"node_id":"MDQ6VXNlcjIyMzQ2ODYw","avatar_url":"https://avatars0.githubusercontent.com/u/22346860?v=4","gravatar_id":"","url":"https://api.github.com/users/l-bat","html_url":"https://github.com/l-bat","followers_url":"https://api.github.com/users/l-bat/followers","following_url":"https://api.github.com/users/l-bat/following{/other_user}","gists_url":"https://api.github.com/users/l-bat/gists{/gist_id}","starred_url":"https://api.github.com/users/l-bat/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/l-bat/subscriptions","organizations_url":"https://api.github.com/users/l-bat/orgs","repos_url":"https://api.github.com/users/l-bat/repos","events_url":"https://api.github.com/users/l-bat/events{/privacy}","received_events_url":"https://api.github.com/users/l-bat/received_events","type":"User","site_admin":false},"body":"done","created_at":"2018-08-07T11:24:58Z","updated_at":"2018-08-07T11:24:58Z","html_url":"https://github.com/opencv/opencv/pull/12071#discussion_r208192517","pull_request_url":"https://api.github.com/repos/opencv/opencv/pulls/12071","author_association":"NONE","_links":{"self":{"href":"https://api.github.com/repos/opencv/opencv/pulls/comments/208192517"},"html":{"href":"https://github.com/opencv/opencv/pull/12071#discussion_r208192517"},"pull_request":{"href":"https://api.github.com/repos/opencv/opencv/pulls/12071"}},"in_reply_to_id":207179824},"pull_request":{"url":"https://api.github.com/repos/opencv/opencv/pulls/12071","id":204169340,"node_id":"MDExOlB1bGxSZXF1ZXN0MjA0MTY5MzQw","html_url":"https://github.com/opencv/opencv/pull/12071","diff_url":"https://github.com/opencv/opencv/pull/12071.diff","patch_url":"https://github.com/opencv/opencv/pull/12071.patch","issue_url":"https://api.github.com/repos/opencv/opencv/issues/12071","number":12071,"state":"open","locked":false,"title":" Added ONNX parser with AlexNet support","user":{"login":"l-bat","id":22346860,"node_id":"MDQ6VXNlcjIyMzQ2ODYw","avatar_url":"https://avatars0.githubusercontent.com/u/22346860?v=4","gravatar_id":"","url":"https://api.github.com/users/l-bat","html_url":"https://github.com/l-bat","followers_url":"https://api.github.com/users/l-bat/followers","following_url":"https://api.github.com/users/l-bat/following{/other_user}","gists_url":"https://api.github.com/users/l-bat/gists{/gist_id}","starred_url":"https://api.github.com/users/l-bat/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/l-bat/subscriptions","organizations_url":"https://api.github.com/users/l-bat/orgs","repos_url":"https://api.github.com/users/l-bat/repos","events_url":"https://api.github.com/users/l-bat/events{/privacy}","received_events_url":"https://api.github.com/users/l-bat/received_events","type":"User","site_admin":false},"body":"**Merge with extra**: https://github.com/opencv/opencv_extra/pull/499\r\n\r\nrelated #11008\r\n\r\n```\r\nforce_builders=Custom\r\ndocker_image:Custom=ubuntu-openvino:16.04\r\nbuildworker:Custom=linux-1\r\ntest_opencl:Custom=ON\r\n```","created_at":"2018-07-26T14:52:47Z","updated_at":"2018-08-07T11:24:58Z","closed_at":null,"merged_at":null,"merge_commit_sha":"62194051979de492b63ee3443d8e8906709ae322","assignee":{"login":"dkurt","id":25801568,"node_id":"MDQ6VXNlcjI1ODAxNTY4","avatar_url":"https://avatars0.githubusercontent.com/u/25801568?v=4","gravatar_id":"","url":"https://api.github.com/users/dkurt","html_url":"https://github.com/dkurt","followers_url":"https://api.github.com/users/dkurt/followers","following_url":"https://api.github.com/users/dkurt/following{/other_user}","gists_url":"https://api.github.com/users/dkurt/gists{/gist_id}","starred_url":"https://api.github.com/users/dkurt/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dkurt/subscriptions","organizations_url":"https://api.github.com/users/dkurt/orgs","repos_url":"https://api.github.com/users/dkurt/repos","events_url":"https://api.github.com/users/dkurt/events{/privacy}","received_events_url":"https://api.github.com/users/dkurt/received_events","type":"User","site_admin":false},"assignees":[{"login":"dkurt","id":25801568,"node_id":"MDQ6VXNlcjI1ODAxNTY4","avatar_url":"https://avatars0.githubusercontent.com/u/25801568?v=4","gravatar_id":"","url":"https://api.github.com/users/dkurt","html_url":"https://github.com/dkurt","followers_url":"https://api.github.com/users/dkurt/followers","following_url":"https://api.github.com/users/dkurt/following{/other_user}","gists_url":"https://api.github.com/users/dkurt/gists{/gist_id}","starred_url":"https://api.github.com/users/dkurt/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/dkurt/subscriptions","organizations_url":"https://api.github.com/users/dkurt/orgs","repos_url":"https://api.github.com/users/dkurt/repos","events_url":"https://api.github.com/users/dkurt/events{/privacy}","received_events_url":"https://api.github.com/users/dkurt/received_events","type":"User","site_admin":false}],"requested_reviewers":[],"requested_teams":[],"labels":[{"id":635087908,"node_id":"MDU6TGFiZWw2MzUwODc5MDg=","url":"https://api.github.com/repos/opencv/opencv/labels/category:%20dnn","name":"category: dnn","color":"ededed","default":false},{"id":241023000,"node_id":"MDU6TGFiZWwyNDEwMjMwMDA=","url":"https://api.github.com/repos/opencv/opencv/labels/feature","name":"feature","color":"84b6eb","default":false}],"milestone":null,"commits_url":"https://api.github.com/repos/opencv/opencv/pulls/12071/commits","review_comments_url":"https://api.github.com/repos/opencv/opencv/pulls/12071/comments","review_comment_url":"https://api.github.com/repos/opencv/opencv/pulls/comments{/number}","comments_url":"https://api.github.com/repos/opencv/opencv/issues/12071/comments","statuses_url":"https://api.github.com/repos/opencv/opencv/statuses/ba1ad2caac4f9513b96021fc37a1bd6e11ce72dc","head":{"label":"l-bat:l-bat/onnx_parser","ref":"l-bat/onnx_parser","sha":"ba1ad2caac4f9513b96021fc37a1bd6e11ce72dc","user":{"login":"l-bat","id":22346860,"node_id":"MDQ6VXNlcjIyMzQ2ODYw","avatar_url":"https://avatars0.githubusercontent.com/u/22346860?v=4","gravatar_id":"","url":"https://api.github.com/users/l-bat","html_url":"https://github.com/l-bat","followers_url":"https://api.github.com/users/l-bat/followers","following_url":"https://api.github.com/users/l-bat/following{/other_user}","gists_url":"https://api.github.com/users/l-bat/gists{/gist_id}","starred_url":"https://api.github.com/users/l-bat/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/l-bat/subscriptions","organizations_url":"https://api.github.com/users/l-bat/orgs","repos_url":"https://api.github.com/users/l-bat/repos","events_url":"https://api.github.com/users/l-bat/events{/privacy}","received_events_url":"https://api.github.com/users/l-bat/received_events","type":"User","site_admin":false},"repo":{"id":141277633,"node_id":"MDEwOlJlcG9zaXRvcnkxNDEyNzc2MzM=","name":"opencv","full_name":"l-bat/opencv","owner":{"login":"l-bat","id":22346860,"node_id":"MDQ6VXNlcjIyMzQ2ODYw","avatar_url":"https://avatars0.githubusercontent.com/u/22346860?v=4","gravatar_id":"","url":"https://api.github.com/users/l-bat","html_url":"https://github.com/l-bat","followers_url":"https://api.github.com/users/l-bat/followers","following_url":"https://api.github.com/users/l-bat/following{/other_user}","gists_url":"https://api.github.com/users/l-bat/gists{/gist_id}","starred_url":"https://api.github.com/users/l-bat/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/l-bat/subscriptions","organizations_url":"https://api.github.com/users/l-bat/orgs","repos_url":"https://api.github.com/users/l-bat/repos","events_url":"https://api.github.com/users/l-bat/events{/privacy}","received_events_url":"https://api.github.com/users/l-bat/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/l-bat/opencv","description":"Open Source Computer Vision Library","fork":true,"url":"https://api.github.com/repos/l-bat/opencv","forks_url":"https://api.github.com/repos/l-bat/opencv/forks","keys_url":"https://api.github.com/repos/l-bat/opencv/keys{/key_id}","collaborators_url":"https://api.github.com/repos/l-bat/opencv/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/l-bat/opencv/teams","hooks_url":"https://api.github.com/repos/l-bat/opencv/hooks","issue_events_url":"https://api.github.com/repos/l-bat/opencv/issues/events{/number}","events_url":"https://api.github.com/repos/l-bat/opencv/events","assignees_url":"https://api.github.com/repos/l-bat/opencv/assignees{/user}","branches_url":"https://api.github.com/repos/l-bat/opencv/branches{/branch}","tags_url":"https://api.github.com/repos/l-bat/opencv/tags","blobs_url":"https://api.github.com/repos/l-bat/opencv/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/l-bat/opencv/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/l-bat/opencv/git/refs{/sha}","trees_url":"https://api.github.com/repos/l-bat/opencv/git/trees{/sha}","statuses_url":"https://api.github.com/repos/l-bat/opencv/statuses/{sha}","languages_url":"https://api.github.com/repos/l-bat/opencv/languages","stargazers_url":"https://api.github.com/repos/l-bat/opencv/stargazers","contributors_url":"https://api.github.com/repos/l-bat/opencv/contributors","subscribers_url":"https://api.github.com/repos/l-bat/opencv/subscribers","subscription_url":"https://api.github.com/repos/l-bat/opencv/subscription","commits_url":"https://api.github.com/repos/l-bat/opencv/commits{/sha}","git_commits_url":"https://api.github.com/repos/l-bat/opencv/git/commits{/sha}","comments_url":"https://api.github.com/repos/l-bat/opencv/comments{/number}","issue_comment_url":"https://api.github.com/repos/l-bat/opencv/issues/comments{/number}","contents_url":"https://api.github.com/repos/l-bat/opencv/contents/{+path}","compare_url":"https://api.github.com/repos/l-bat/opencv/compare/{base}...{head}","merges_url":"https://api.github.com/repos/l-bat/opencv/merges","archive_url":"https://api.github.com/repos/l-bat/opencv/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/l-bat/opencv/downloads","issues_url":"https://api.github.com/repos/l-bat/opencv/issues{/number}","pulls_url":"https://api.github.com/repos/l-bat/opencv/pulls{/number}","milestones_url":"https://api.github.com/repos/l-bat/opencv/milestones{/number}","notifications_url":"https://api.github.com/repos/l-bat/opencv/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/l-bat/opencv/labels{/name}","releases_url":"https://api.github.com/repos/l-bat/opencv/releases{/id}","deployments_url":"https://api.github.com/repos/l-bat/opencv/deployments","created_at":"2018-07-17T11:08:00Z","updated_at":"2018-07-17T11:08:14Z","pushed_at":"2018-08-07T11:24:39Z","git_url":"git://github.com/l-bat/opencv.git","ssh_url":"git@github.com:l-bat/opencv.git","clone_url":"https://github.com/l-bat/opencv.git","svn_url":"https://github.com/l-bat/opencv","homepage":"https://opencv.org","size":457700,"stargazers_count":0,"watchers_count":0,"language":"C++","has_issues":false,"has_projects":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"archived":false,"open_issues_count":0,"license":{"key":"other","name":"Other","spdx_id":null,"url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"opencv:3.4","ref":"3.4","sha":"1c73e66edff5b9c442ceca34696915a83c366ec2","user":{"login":"opencv","id":5009934,"node_id":"MDEyOk9yZ2FuaXphdGlvbjUwMDk5MzQ=","avatar_url":"https://avatars3.githubusercontent.com/u/5009934?v=4","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,"node_id":"MDEwOlJlcG9zaXRvcnk1MTA4MDUx","name":"opencv","full_name":"opencv/opencv","owner":{"login":"opencv","id":5009934,"node_id":"MDEyOk9yZ2FuaXphdGlvbjUwMDk5MzQ=","avatar_url":"https://avatars3.githubusercontent.com/u/5009934?v=4","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":"2018-08-07T10:12:15Z","pushed_at":"2018-08-07T09:46:50Z","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":"https://opencv.org","size":457818,"stargazers_count":26710,"watchers_count":26710,"language":"C++","has_issues":true,"has_projects":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":19123,"mirror_url":null,"archived":false,"open_issues_count":1481,"license":{"key":"other","name":"Other","spdx_id":null,"url":null,"node_id":"MDc6TGljZW5zZTA="},"forks":19123,"open_issues":1481,"watchers":26710,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/opencv/opencv/pulls/12071"},"html":{"href":"https://github.com/opencv/opencv/pull/12071"},"issue":{"href":"https://api.github.com/repos/opencv/opencv/issues/12071"},"comments":{"href":"https://api.github.com/repos/opencv/opencv/issues/12071/comments"},"review_comments":{"href":"https://api.github.com/repos/opencv/opencv/pulls/12071/comments"},"review_comment":{"href":"https://api.github.com/repos/opencv/opencv/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/opencv/opencv/pulls/12071/commits"},"statuses":{"href":"https://api.github.com/repos/opencv/opencv/statuses/ba1ad2caac4f9513b96021fc37a1bd6e11ce72dc"}},"author_association":"NONE"}}
{"actor":{"display_login":"l-bat"}}