{"id":3827,"date":"2020-04-12T21:29:07","date_gmt":"2020-04-13T04:29:07","guid":{"rendered":"http:\/\/mcclanahoochie.com\/blog\/?p=3827"},"modified":"2024-08-04T16:03:15","modified_gmt":"2024-08-04T23:03:15","slug":"accordion-hands","status":"publish","type":"post","link":"https:\/\/mcclanahoochie.com\/blog\/2020\/04\/accordion-hands\/","title":{"rendered":"Accordion Hands"},"content":{"rendered":"<div class=\"wp-block-image is-style-default\">\n<figure class=\"aligncenter size-full is-resized\"><img data-recalc-dims=\"1\" decoding=\"async\" data-attachment-id=\"3831\" data-permalink=\"https:\/\/mcclanahoochie.com\/blog\/2020\/04\/accordion-hands\/accordion_hands_banner\/#main\" data-orig-file=\"https:\/\/i0.wp.com\/mcclanahoochie.com\/blog\/wp-content\/uploads\/2020\/04\/accordion_hands_banner.png?fit=1024%2C500&amp;ssl=1\" data-orig-size=\"1024,500\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"accordion_hands_banner\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/mcclanahoochie.com\/blog\/wp-content\/uploads\/2020\/04\/accordion_hands_banner.png?fit=1024%2C500&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/mcclanahoochie.com\/blog\/wp-content\/uploads\/2020\/04\/accordion_hands_banner.png?resize=512%2C250&#038;ssl=1\" alt=\"\" class=\"wp-image-3831\" width=\"512\" height=\"250\" srcset=\"https:\/\/i0.wp.com\/mcclanahoochie.com\/blog\/wp-content\/uploads\/2020\/04\/accordion_hands_banner.png?w=1024&amp;ssl=1 1024w, https:\/\/i0.wp.com\/mcclanahoochie.com\/blog\/wp-content\/uploads\/2020\/04\/accordion_hands_banner.png?resize=300%2C146&amp;ssl=1 300w, https:\/\/i0.wp.com\/mcclanahoochie.com\/blog\/wp-content\/uploads\/2020\/04\/accordion_hands_banner.png?resize=768%2C375&amp;ssl=1 768w\" sizes=\"(max-width: 512px) 100vw, 512px\" \/><\/figure>\n<\/div>\n\n\n<h2 class=\"wp-block-heading\">About<\/h2>\n\n\n\n<p>Accordion Hands is a fun way to interactively &#8220;play&#8221; a virtual accordion! <br \/><br \/>The app was inspired by discovering the funny <strong><em><a rel=\"noreferrer noopener\" href=\"https:\/\/www.youtube.com\/watch?v=S65jqrHQi_c\" target=\"_blank\">Life Accordion to Trump<\/a> <\/em><\/strong>YouTube videos.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>This app is not meant to be a real accordion simulator!<\/p>\n<\/blockquote>\n\n\n\n<p>In its current form, the app is purely just a tech demo (just for fun), but I hope to address its shortcomings soon enough \ud83d\ude42 and add many more features (see below).<\/p>\n\n\n\n<p class=\"has-text-align-center has-bright-red-color has-text-color\">*<a href=\"https:\/\/play.google.com\/store\/apps\/details?id=com.mcclanahoochie.accordionhands\">Free App Download!*<\/a>     |  <a href=\"https:\/\/mcclanahoochie.com\/accordionhands\/\" target=\"_blank\" rel=\"noreferrer noopener\"><strong>*New Web Demo!*<\/strong><\/a><\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-medium is-resized\"><a href=\"https:\/\/mcclanahoochie.com\/accordionhands\/\"><img data-recalc-dims=\"1\" decoding=\"async\" data-attachment-id=\"3829\" data-permalink=\"https:\/\/mcclanahoochie.com\/blog\/2020\/04\/accordion-hands\/accordion-hands-icon-512\/#main\" data-orig-file=\"https:\/\/i0.wp.com\/mcclanahoochie.com\/blog\/wp-content\/uploads\/2020\/04\/accordion-hands-icon-512.png?fit=512%2C512&amp;ssl=1\" data-orig-size=\"512,512\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"accordion-hands-icon-512\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/mcclanahoochie.com\/blog\/wp-content\/uploads\/2020\/04\/accordion-hands-icon-512.png?fit=512%2C512&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/mcclanahoochie.com\/blog\/wp-content\/uploads\/2020\/04\/accordion-hands-icon-512.png?resize=225%2C225&#038;ssl=1\" alt=\"\" class=\"wp-image-3829\" width=\"225\" height=\"225\" srcset=\"https:\/\/i0.wp.com\/mcclanahoochie.com\/blog\/wp-content\/uploads\/2020\/04\/accordion-hands-icon-512.png?resize=300%2C300&amp;ssl=1 300w, https:\/\/i0.wp.com\/mcclanahoochie.com\/blog\/wp-content\/uploads\/2020\/04\/accordion-hands-icon-512.png?resize=150%2C150&amp;ssl=1 150w, https:\/\/i0.wp.com\/mcclanahoochie.com\/blog\/wp-content\/uploads\/2020\/04\/accordion-hands-icon-512.png?resize=50%2C50&amp;ssl=1 50w, https:\/\/i0.wp.com\/mcclanahoochie.com\/blog\/wp-content\/uploads\/2020\/04\/accordion-hands-icon-512.png?w=512&amp;ssl=1 512w\" sizes=\"(max-width: 225px) 100vw, 225px\" \/><\/a><figcaption class=\"wp-element-caption\">           Accordion Hands app logo <\/figcaption><\/figure>\n<\/div>\n\n\n<p>The app is powered by Google&#8217;s <a href=\"https:\/\/mediapipe.dev\">MediaPipe<\/a> ML framework, and uses their hand detection + hand tracking machine learning models. <\/p>\n\n\n\n<p>Since MediaPipe is cross-platform, I was able to very quickly prototype a demo on my macbook using a webcam (all in C++), and could also immediately test on Android. This allowed me to do quick dev iterations on my laptop (natively, not via emulator), and periodically test and tweak things on my phone. <\/p>\n\n\n\n<figure><iframe loading=\"lazy\" width=\"560\" height=\"315\" src=\"https:\/\/www.youtube.com\/embed\/z32_xc4C8Zc\" allowfullscreen=\"\"><\/iframe><\/figure>\n\n\n\n<h5 class=\"wp-block-heading\">How the app works:<\/h5>\n\n\n\n<p>The core logic piggybacks off of the MediaPipe <a href=\"https:\/\/github.com\/google\/mediapipe\/blob\/master\/mediapipe\/docs\/multi_hand_tracking_mobile_gpu.md\">multi-hand tracking<\/a> example. I basically just had to do two things: <br \/>1) add one new calculator to the graph to calculate a rotated\/stretched box between two hands, and manage the accordion sounds<br \/>2) extend the existing annotation calculator&#8217;s box drawing to support drawing a box filled with an image. <\/p>\n\n\n\n<p>I was able to have a complete Android proof of concept pretty quickly (by hijacking existing demo apps) in about 1 weekend, and then spent 3+ weekends redesigning\/customizing\/polishing the Android app (b\/c how overly complicated general Android development is, on top of that using only bazel instead of gradle, and waiting for app store approval..). <\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Demo<\/h2>\n\n\n\n<p><strong>And <em>finally<\/em>: achieving the original goal, <em>automatically<\/em> via my app! <\/strong><br \/><strong>(click <\/strong><strong>image for <a href=\"https:\/\/www.youtube.com\/watch?v=mf3cFdv7qj0\" target=\"_blank\" rel=\"noreferrer noopener\">audio<\/a><\/strong>):<\/p>\n\n\n<div class=\"wp-block-image is-style-default\">\n<figure class=\"aligncenter size-large is-resized\"><a href=\"https:\/\/youtu.be\/mf3cFdv7qj0\" target=\"_blank\" rel=\"noopener noreferrer\"><img data-recalc-dims=\"1\" decoding=\"async\" data-attachment-id=\"3862\" data-permalink=\"https:\/\/mcclanahoochie.com\/blog\/2020\/04\/accordion-hands\/trumped3\/#main\" data-orig-file=\"https:\/\/i0.wp.com\/mcclanahoochie.com\/blog\/wp-content\/uploads\/2020\/04\/trumped3.gif?fit=360%2C240&amp;ssl=1\" data-orig-size=\"360,240\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"trumped3\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/mcclanahoochie.com\/blog\/wp-content\/uploads\/2020\/04\/trumped3.gif?fit=360%2C240&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/mcclanahoochie.com\/blog\/wp-content\/uploads\/2020\/04\/trumped3.gif?resize=430%2C286&#038;ssl=1\" alt=\"\" class=\"wp-image-3862\" width=\"430\" height=\"286\"\/><\/a><figcaption class=\"wp-element-caption\">Fun fact: <br \/>Every time trump does this with his hands, he is giving <em><strong>disinformation<\/strong><\/em>.<\/figcaption><\/figure>\n<\/div>\n\n\n<p>The app has a few rough edges, but I just couldn&#8217;t wait to release it! Updates will come later and improve many things, but in the meantime please have some fun \ud83d\ude42<\/p>\n\n\n\n<p><strong>Another automatically created demo (click <\/strong><strong><\/strong><strong>image for <a href=\"https:\/\/www.youtube.com\/watch?v=se74MtVUBAU\" target=\"_blank\" rel=\"noreferrer noopener\">audio<\/a><\/strong>):<\/p>\n\n\n<div class=\"wp-block-image is-style-default\">\n<figure class=\"aligncenter size-thumbnail is-resized\"><a href=\"https:\/\/www.youtube.com\/watch?v=se74MtVUBAU\" target=\"_blank\" rel=\"noopener noreferrer\"><img data-recalc-dims=\"1\" decoding=\"async\" data-attachment-id=\"3917\" data-permalink=\"https:\/\/mcclanahoochie.com\/blog\/2020\/04\/accordion-hands\/trump-hands-wall-small3\/#main\" data-orig-file=\"https:\/\/i0.wp.com\/mcclanahoochie.com\/blog\/wp-content\/uploads\/2020\/07\/trump-hands-wall-small3.gif?fit=336%2C280&amp;ssl=1\" data-orig-size=\"336,280\" data-comments-opened=\"1\" data-image-meta=\"{&quot;aperture&quot;:&quot;0&quot;,&quot;credit&quot;:&quot;&quot;,&quot;camera&quot;:&quot;&quot;,&quot;caption&quot;:&quot;&quot;,&quot;created_timestamp&quot;:&quot;0&quot;,&quot;copyright&quot;:&quot;&quot;,&quot;focal_length&quot;:&quot;0&quot;,&quot;iso&quot;:&quot;0&quot;,&quot;shutter_speed&quot;:&quot;0&quot;,&quot;title&quot;:&quot;&quot;,&quot;orientation&quot;:&quot;0&quot;}\" data-image-title=\"trump-hands-wall-small3\" data-image-description=\"\" data-image-caption=\"\" data-large-file=\"https:\/\/i0.wp.com\/mcclanahoochie.com\/blog\/wp-content\/uploads\/2020\/07\/trump-hands-wall-small3.gif?fit=336%2C280&amp;ssl=1\" src=\"https:\/\/i0.wp.com\/mcclanahoochie.com\/blog\/wp-content\/uploads\/2020\/07\/trump-hands-wall-small3.gif?resize=270%2C270&#038;ssl=1\" alt=\"\" class=\"wp-image-3917\" width=\"270\" height=\"270\" srcset=\"https:\/\/i0.wp.com\/mcclanahoochie.com\/blog\/wp-content\/uploads\/2020\/07\/trump-hands-wall-small3.gif?resize=150%2C150&amp;ssl=1 150w, https:\/\/i0.wp.com\/mcclanahoochie.com\/blog\/wp-content\/uploads\/2020\/07\/trump-hands-wall-small3.gif?resize=50%2C50&amp;ssl=1 50w\" sizes=\"(max-width: 270px) 100vw, 270px\" \/><\/a><figcaption class=\"wp-element-caption\">        (accordion hands in action)      <\/figcaption><\/figure>\n<\/div>\n\n\n<p><\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Download<\/h2>\n\n\n\n<p class=\"has-medium-font-size\"><a rel=\"noreferrer noopener\" href=\"https:\/\/play.google.com\/store\/apps\/details?id=com.mcclanahoochie.accordionhands\" target=\"_blank\">Free Android App<\/a><\/p>\n\n\n\n<p class=\"has-bright-red-color has-text-color has-medium-font-size\">*<a href=\"https:\/\/mcclanahoochie.com\/accordionhands\/\" target=\"_blank\" rel=\"noreferrer noopener\">New: Web Demo!<\/a>*<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Release &amp; Change Log<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li>0.1 &#8211; 2020\/04\/12\n<ul class=\"wp-block-list\">\n<li>Initial [beta] release<\/li>\n\n\n\n<li>Interactive live camera demo<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>0.4 &#8211; 2020\/05\/17\n<ul class=\"wp-block-list\">\n<li>Support loading a local video<\/li>\n\n\n\n<li>Misc internal bug fixes<\/li>\n\n\n\n<li>Improve speed performance<\/li>\n\n\n\n<li>Misc UI tweaks<\/li>\n\n\n\n<li>Significantly reduced app file size<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>0.5 &#8211; 2020\/06\/28\n<ul class=\"wp-block-list\">\n<li>Improved tracking<\/li>\n\n\n\n<li>Misc sound trigger tweaks <\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>0.5.1 &#8211; 2020\/07\/01\n<ul class=\"wp-block-list\">\n<li>Adjusted audio levels<\/li>\n\n\n\n<li>Minor tracking improvement<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>0.6.0 &#8211; 2020\/09\/13<ul><li>Rear\/back camera support<\/li><\/ul>\n<ul class=\"wp-block-list\">\n<li>Misc performance and memory improvements<\/li>\n\n\n\n<li>Updated main menu<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>0.7.0 &#8211; 2022\/03\/19\n<ul class=\"wp-block-list\">\n<li>Accordion graphic changes size based on &#8216;depth&#8217;<\/li>\n\n\n\n<li>Misc performance improvements<\/li>\n<\/ul>\n<\/li>\n<\/ul>\n\n\n\n<h5 class=\"wp-block-heading\">Upcoming  Features<\/h5>\n\n\n\n<ul class=\"wp-block-list\">\n<li><s>Option to load a video file<\/s><\/li>\n\n\n\n<li><s>Rear facing camera<\/s><\/li>\n\n\n\n<li>More sounds<\/li>\n\n\n\n<li>More accordion graphics<\/li>\n\n\n\n<li>Configurable settings<\/li>\n\n\n\n<li>Record\/Share buttons<\/li>\n\n\n\n<li>&#8230;<\/li>\n<\/ul>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>About Accordion Hands is a fun way to interactively &#8220;play&#8221; a virtual accordion! The app was inspired by discovering the funny Life Accordion to Trump YouTube videos. This app is not meant to be a real accordion simulator! In its current form, the app is purely just a tech demo (just for fun), but I &#8230; <a title=\"Accordion Hands\" class=\"read-more\" href=\"https:\/\/mcclanahoochie.com\/blog\/2020\/04\/accordion-hands\/\" aria-label=\"Read more about Accordion Hands\">Read more<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"advanced_seo_description":"","jetpack_seo_html_title":"","jetpack_seo_noindex":false,"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":true,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2}},"categories":[1],"tags":[405,411,123,408,413,412,406,410,407,101,409],"class_list":["post-3827","post","type-post","status-publish","format-standard","hentry","category-uncategorized","tag-accordion","tag-accordion-hands","tag-android","tag-app","tag-hand-tracking","tag-hands","tag-machine-learning","tag-mediapipe","tag-ml","tag-programming","tag-trump"],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/pZdXI-ZJ","jetpack-related-posts":[{"id":3454,"url":"https:\/\/mcclanahoochie.com\/blog\/2015\/06\/play-youtube-in-background-android-app\/","url_meta":{"origin":3827,"position":0},"title":"Play YouTube in Background on Android","author":"mcclanahoochie","date":"June 19, 2015","format":false,"excerpt":"YT Mobile Android App Are you tired of YouTube stop playing when turning off your screen or minimizing the app? Don't want to pay for YouTube or Google Music? \u00a0 Try: Summary This app provides a convenient place to browse the mobile web version of YouTube, and allows you to\u2026","rel":"","context":"With 71 comments","block_context":{"text":"With 71 comments","link":"https:\/\/mcclanahoochie.com\/blog\/2015\/06\/play-youtube-in-background-android-app\/#comments"},"img":{"alt_text":"ytmobile.tk","src":"https:\/\/i0.wp.com\/mcclanahoochie.com\/blog\/wp-content\/uploads\/2015\/06\/logo-icon-114.png?resize=350%2C200","width":350,"height":200},"classes":[]},{"id":3491,"url":"https:\/\/mcclanahoochie.com\/blog\/2015\/12\/google-cardboard-camera-vr-photos\/","url_meta":{"origin":3827,"position":1},"title":"Google&#8217;s Cardboard Camera for 3D Virtual Reality Photos","author":"mcclanahoochie","date":"December 3, 2015","format":false,"excerpt":"Today Google released an app \"Cardboard Camera\" for Android in\u00a0the Play Store: https:\/\/play.google.com\/store\/apps\/details?id=com.google.vr.cyclops A free app to create 3D virtual reality photos (stereoscopic 3D 360\u00b0 panoramas). VR Photography The app\u00a0takes a three-dimensional panorama you can view in the Google Cardboard app. The result is a 360\u00b0 image where near things\u2026","rel":"","context":"In \"android\"","block_context":{"text":"android","link":"https:\/\/mcclanahoochie.com\/blog\/tag\/android\/"},"img":{"alt_text":"Screen Shot 2015-12-03 at 2.19.33 PM","src":"https:\/\/i0.wp.com\/mcclanahoochie.com\/blog\/wp-content\/uploads\/2015\/12\/Screen-Shot-2015-12-03-at-2.19.33-PM-280x300.png?resize=350%2C200","width":350,"height":200},"classes":[]},{"id":1762,"url":"https:\/\/mcclanahoochie.com\/blog\/2011\/09\/music-visualization-with-processing\/","url_meta":{"origin":3827,"position":2},"title":"Music Visualization with Processing","author":"mcclanahoochie","date":"September 5, 2011","format":false,"excerpt":"Live Spectrogram Re-Inspired by the awesome artistic works in\u00a0Resonance the Film, a TED talk on generative music videos,\u00a0and then remembering the good ol' days of MilkDrop\u00a0magic, I found myself captivated and wanting to learn more about music visualization\u00a0and how I could create my own. Since I will be using Processing\u2026","rel":"","context":"In \"music\"","block_context":{"text":"music","link":"https:\/\/mcclanahoochie.com\/blog\/tag\/music\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/mcclanahoochie.com\/blog\/wp-content\/uploads\/2011\/09\/spect-bmsr-milkskates.jpg?resize=350%2C200","width":350,"height":200},"classes":[]},{"id":2168,"url":"https:\/\/mcclanahoochie.com\/blog\/2012\/04\/opencl-image-pyramid-detail-enhancement\/","url_meta":{"origin":3827,"position":3},"title":"Laplacian Pyramid Image Enhancement","author":"mcclanahoochie","date":"April 27, 2012","format":false,"excerpt":"My final project for the Computational Photography class at GaTech. Multi-scale image contrast\/detail manipulation Operating on images at multiple scales is conventionally done using multi-scale decompositions, such as the Laplacian pyramid [Burt and Adelson 1983].\u00a0Such techniques decompose an image to multiple detail layers at different scales in a pyramid like\u2026","rel":"","context":"In \"computational photography\"","block_context":{"text":"computational photography","link":"https:\/\/mcclanahoochie.com\/blog\/tag\/computational-photography\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/mcclanahoochie.com\/blog\/wp-content\/uploads\/2012\/04\/pyr_detail.png?resize=350%2C200","width":350,"height":200},"classes":[]},{"id":108,"url":"https:\/\/mcclanahoochie.com\/blog\/2010\/07\/15-minutes-of-fame-for-feedspeak\/","url_meta":{"origin":3827,"position":4},"title":"15 Minutes of Fame for FeedSpeak","author":"mcclanahoochie","date":"July 10, 2010","format":false,"excerpt":"Yesterday, I was stoked about FeedSpeak getting posted on the front page of the xda-developers site! This was totally unexpected and definitely made my day. \u00a0 A few days ago, a friend had\u00a0recommended\u00a0that I advertise the app in the xda-developers forum, so I created a simple post for FeedSpeak Pro.\u2026","rel":"","context":"In \"android\"","block_context":{"text":"android","link":"https:\/\/mcclanahoochie.com\/blog\/tag\/android\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/mcclanahoochie.com\/blog\/wp-content\/uploads\/2010\/07\/feedspeak_pro_icon.png?resize=350%2C200","width":350,"height":200},"classes":[]},{"id":950,"url":"https:\/\/mcclanahoochie.com\/blog\/2011\/01\/computer-vision-on-android\/","url_meta":{"origin":3827,"position":5},"title":"Computer Vision on Android in Java","author":"mcclanahoochie","date":"January 4, 2011","format":false,"excerpt":"January 2010 \u00a0 Over the holiday break, I finally created an Android\u00a0app that allows image processing on the camera's raw data, and displays it back on the screen. It only uses\u00a0Java on the CPU for now, but in my free time I'll be porting the code to OpenGL ES to\u2026","rel":"","context":"In \"android\"","block_context":{"text":"android","link":"https:\/\/mcclanahoochie.com\/blog\/tag\/android\/"},"img":{"alt_text":"","src":"https:\/\/i0.wp.com\/mcclanahoochie.com\/blog\/wp-content\/uploads\/2011\/01\/device-sobel-2-small.png?resize=350%2C200","width":350,"height":200},"classes":[]}],"jetpack_likes_enabled":false,"_links":{"self":[{"href":"https:\/\/mcclanahoochie.com\/blog\/wp-json\/wp\/v2\/posts\/3827","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mcclanahoochie.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mcclanahoochie.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mcclanahoochie.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mcclanahoochie.com\/blog\/wp-json\/wp\/v2\/comments?post=3827"}],"version-history":[{"count":1,"href":"https:\/\/mcclanahoochie.com\/blog\/wp-json\/wp\/v2\/posts\/3827\/revisions"}],"predecessor-version":[{"id":4292,"href":"https:\/\/mcclanahoochie.com\/blog\/wp-json\/wp\/v2\/posts\/3827\/revisions\/4292"}],"wp:attachment":[{"href":"https:\/\/mcclanahoochie.com\/blog\/wp-json\/wp\/v2\/media?parent=3827"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mcclanahoochie.com\/blog\/wp-json\/wp\/v2\/categories?post=3827"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mcclanahoochie.com\/blog\/wp-json\/wp\/v2\/tags?post=3827"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}