Do SIFT and send out the results

Don't yet have the math for calculating poses based on these results.

Change-Id: I6494dbf1d3a7c13db902cf00b7c362a2a956691b
diff --git a/y2020/vision/sift/BUILD b/y2020/vision/sift/BUILD
index b4610d7..5cfb6aa 100644
--- a/y2020/vision/sift/BUILD
+++ b/y2020/vision/sift/BUILD
@@ -220,3 +220,40 @@
     includes = [":sift_fbs_includes"],
     visibility = ["//visibility:public"],
 )
+
+py_binary(
+    name = "demo_sift_training",
+    srcs = ["demo_sift_training.py"],
+    default_python_version = "PY3",
+    srcs_version = "PY2AND3",
+    deps = [
+        ":sift_fbs_python",
+        "@opencv_contrib_nonfree_amd64//:python_opencv",
+    ],
+)
+
+genrule(
+    name = "run_demo_sift_training",
+    srcs = [
+        "images/demo/FRC-Image4-cleaned.png",
+    ],
+    outs = [
+        "demo_sift.h",
+    ],
+    cmd = " ".join([
+        "$(location :demo_sift_training)",
+        "$(location images/demo/FRC-Image4-cleaned.png)",
+        "$(location demo_sift.h)",
+    ]),
+    tools = [
+        ":demo_sift_training",
+    ],
+)
+
+cc_library(
+    name = "demo_sift",
+    hdrs = [
+        "demo_sift.h",
+    ],
+    visibility = ["//visibility:public"],
+)