My wife and kids enjoy bird watching. In our dining room, we attached a bird feeder to a window in the room. My wife asked if I could hack together a way to snap pictures of birds that visit the bird feeder. After doing some good searches, I realized that SimpleCV has some easy capabilities enabling you to create a motion detection system with Python. SimpleCV has become one of my favorite open source computer vision tools that you program using python. In general, computer vision is the branch of computer science that deals with understanding images and video. In this post, I’ll try to outline the major ideas from this script by the folks from SimpleCV. I made a few edits to the script to save video frames with motion to disk. To learn more about getting started with python programming, check out this blog post.
In the world of computers, a computer image exists as a grid of numbers. Each number represents a color. A pixel is a cell in this grid of numbers at a particular (x,y) position. SimpleCV enables you to capture an image from your web camera using the following code.
1 2 3
from SimpleCV import *
cam = Camera()
current = cam.getImage()
Let’s say we capture two images taken within a 1/2 second of each other.
1 2 3 4
previous = cam.getImage() #grab a frame
time.sleep(0.5) #wait for half a second
current = cam.getImage() #grab another frame
diff = current - previous
SimpleCV defines an image subtraction operation so that you can find the differences between two images. If the current and previous images are exactly the same, SimpleCV will compute a black image. (i.e. a grid of zeros) If current and previous images have substantial differences, some of the cells in the diff image will have positive values.
At this point, we compute a ‘mean’ factor using all the pixel values from the diff image. If the mean value is higher than a particular threshold, we know that a motion event occurred. We capture an image and store the image to a file.
You can review the complete code solution below.
The following web page from SimpleCV outlines other applications of image math.
cam = Camera()
threshold = 5.0 # if mean exceeds this amount do something
i = 0
disp = SimpleCV.Display((1024, 768))
previous = cam.getImage() #grab a frame
time.sleep(0.5) #wait for half a second
current = cam.getImage() #grab another frame
diff = current - previous
matrix = diff.getNumpy()
mean = matrix.mean()
if mean >= threshold:
print "Motion Detected " + str(i)
# capture the image. Display it. Save the image as a JPEG.
img = cam.getImage()
img.save('%.06d.jpg' % i)
# change the filename counter variable.
i += 1
Interested in learning more about SimpleCV? Check out the following PyCon conference video
Abstract: Katherine Scott: This talk is a brief summary of Computer Vision tutorial we proposed for PyCon. In this talk we will discuss what computer vision is, why it’s useful, what tools exist in the Python ecosystem, and how to apply it to your project.
The micro:bit community has done a great job of putting together helpful tutorials and lessons for a wide range of students.
In the past week, our Google Developer Group of Central Florida teamed up with the Unity 3D meetup of Orlando and LucernaStudios.com to discuss building VR experiences for Google VR. We shared the fundamentals of building for Google DayDream and Cardboard. We also explored connecting those game experiences with Google Firebase.
I want to give a shout out to Hunter and Jose from LucernaStudios.com. Longtime readers of InspiredToEducate.NET know that we believe in playful learning. (game-based learning or challenge-based learning.) LucernaStudios.com care about helping kids to learn through engaging game-based learning. I also appreciate their vision to connect families through game-based learning. We appreciate them coming out to our meetup to share their story with building a math education game using Google Cardboard SDK. Beyond that, they also talked about their lessons learned in playtesting their games, exploring the educational technology market and focusing on knowing their audience. I like the way they’re applying lean startup ideas.
To the Unity 3D meetup group, we appreciate your community and quality content that you organize regularly. If you’re interested in connecting with other game developers or people interested in VR/AR, you’ll enjoy this community. You can connect with the Orlando Unity 3D meetup at their meetup page.
To help provide a project-based learning experience around Google VR, our Google developer group drafted a small multi-player block builder experience we call “Block party.” It provided a solid set of examples to talk about Firebase real-time database, DayDream instant preview, and other Unity 3D fundamentals.
Block Party VR provides an open source project based learning experience for developers getting started in VR or gaming. In this proof of concept game, we will build a multiplayer “Minecraft” like experience designed for VR. The current implementation leverages Google Firebase for client collaboration.
To maximize the impact of the project, we will focus on building a Google Cardboard app in the beginning. Google Cardboard VR has the largest VR market share. The platform can support iOS and Android devices.
Want to make a contribution of something you’ve learned? Create a feature branch and share your code!
Google Developer Group of Central Florida Next Meetup: Google Cloud Study Jam
Learn how to set up development and production environments in the Cloud.
Learn the fundamentals of the Google Cloud Platform, how to run containers on it and how to use the platform for data engineering.
Learn how Docker and Kubernetes work or learn how to process Big Data in the Cloud.
Get access to Qwiklabs.com, a Google training tool, FREE of charge.
Get Google-hosted badges for your online profiles, to show potential employers what you know about Cloud computing.
Study Jams are community-run study groups. The objective of Study Jams is to raise the technical proficiency of our community members through well-defined projects, labs, and technical knowledge sharing.
Google DayDream and Google Cardboard seek to make virtual reality experiences broadly accessible leveraging your smartphone and cleverly designed viewers. The initial release of Google Cardboard had a great DIY feel. Developers received a laser cut cardboard structure that you fold into a viewer, lenses, and a magnetic button. Using the sensors on your phone, Google Cardboard applications enable you to direct your view of the virtual world. Since the initial release of Google Cardboard in 2014, Google and their partners have launched an impressive ecosystem of VR applications and headsets. Check out the full history of Google cardboard here. Today, you can purchase a comfortable Google Cardboard compatible headset from your local toy store, Walmart, or Target at a low cost. It should be noted that Google Cardboard works on Android and iOS.
Building on the experience of Cardboard, Google designed DayDream as a first class VR experience that includes a motion controller. You can think of the motion controller as a “Wii remote” for VR. The elegant design enables you to point and click on elements of your VR world. With the motion controller, users can explore and interact with VR worlds more robustly. You’ll find apps that let you move around a VR space. Click and scrolling through content is much easier using the controller. Unfortunately, the Google DayDream system requires a high performance device like a Google Pixel or Samsung S8. In the coming years, you will see Google release stand-alone Google Daydream headsets that provide the Google DayDream experience, but does not require a smart phone. During the CES conference this week, we got our first glimpse at the first Google DayDream headset by Lenovo priced around $400.
360 Videos on YouTube: For parents and educators, you’ll find YouTube 360 a useful tool for student engagement. Let’s say you’re introducing students to the internals of cells in Biology. You can find 360 videos of cell structure by searching in YouTube. Just include ‘360’ in your search. If a video supports a VR mode of exploration, you simply press the Google Cardboard icon and place your phone into your headset. This feature should exist on Android and iOS. In recent years, major newspapers have started publishing VR experiences to complement news stories. (Washington Post, Discovery, PBS, CNN, etc.)
360 Photos: Over the years, I have started to collect 360 photos of various places on our family trips. Using applications like Google Cardboard camera, it’s easy to take panorama photos and explore them later in VR. This feature should exist on Android and iOS.
Google Street View: I still think it’s crazy and amazing how much of the world has been indexed using Google Street view. Let’s say you want to give your students a tour of Kennedy Space Center in Florida. You can find it on Google street view. On Google DayDream headsets using the Google Street view app, you can tour all snap shots captured in Google Street view. And there’s a lot of them! My kids recently learned that the island in the “Last Jedi” where Rey and Luke meet actually exists in Skellig Michael in Ireland. You can tour this island using Google Street view in Google Daydream!
Arts and culture: Google Daydream has an awesome application for touring museums worldwide entitled “Arts and Culture.” It’s a delightful way to sample great collections of art from the comfort of your device.
Google expeditions: Many at Google have seen the potential of using the engagement factor of VR to inspire curiosity and exploration with their students. To help teachers facilitate “VR field trips” for their classrooms, Google has launched a program and app known as Google expeditions. In the original design of this application, the teacher has a central app for loading different VR scenes and experiences. The control center influences VR headsets used by students in the classroom. Many of these experiences are carefully crafted in collaboration with educators for effective teaching and learning. The collection of VR experiences indexed in this app is amazing. It’s worth checking out. As the class navigate through their “VR field trip”, the teacher can guide and lecture to help focus the students on various parts of their shared experience. In a more recent release of Google expeditions, you can now tour Google expeditions without a teacher guide. To learn more about Google Expeditions, check out the following talk from Google I/O 2017. I really love this application of VR.
In future posts, we will share resources for building Google cardboard and DayDream experiences.
Like many families, we had the opportunity to check out the latest Star Wars movie, the Last Jedi. It seems that Google’s AR team and Disney have cooked up a fun Christmas gift for owners of Google Pixel phones: AR Stickers. We’ve seen sticker augmentations in other photo apps like Snap Chat or Facebook messenger. The AR Stickers feature in Google’s photo app enables you to place 3D content in the context of your environment. Using very advanced surface detection, location, and mapping tech called AR Core, the AR stickers feature does a quick scan of your environment to find surfaces. You can then place Star Wars stickers in your world. The localization and mapping tech has greatly improved. While it has a few imperfections, it’s still crazy fun to enjoy with your family and friends. Here’s a few pictures my family and I cooked up today. For a good laugh, you should check out the hashtag #arstickers for other Star Wars fan building Star Wars scenes in their homes and public spaces. I can’t wait to see this idea expand broadly to other platforms. This is fun disruption to taking photos and videos. 🙂
In November 2017, I had the honor of speaking at DevFest Florida, a community organized developer conference focusing on Google technology. I had an amazing time at this conference. You can check out my reflections on this experience at GDGCentralFlorida.org. Readers of InspiredToEducate.NET know that we’re passionate about helping students to love learning through making, tinkering, and engineering. For me, I encountered a talk that impacted me regarding the intersection of community service and maker education. I do believe in Daniel Pink‘s argument that we’re very motivated or driven in situations where we have autonomy, are growing in mastery, and acting with purpose. The projects that I’ll discuss in this post connect strongly to mastery and purpose motivations. This talk encouraged me to reflect on why I enjoy helping people to learn to code and the culture of a maker space.
Etienne Caron-Petit-Pas shared an amazing story of using mixed reality and maker technologies to create a positive social impact in this community. In OSMOS academy that he helps organize, I appreciated that their community focuses on building stuff that can help enrich people’s lives. It’s not just about the maker tech. For example, their current project focused on building playful VR experiences to support and distract kids who are going through medical procedures in a hospital. Some of the other projects they have attempted feel like citizen science efforts. This talk touches technology ranging from Google Daydream, augmented reality, Android Things and more.
In general, we’ve explored the idea that maker education connects students to the experience of project based learning. Under this paradigm, students engage in learning through the construction of projects or physical stuff. Learning is not centered around a teacher as the center of knowledge. Maker education learning experience always ask students to personalize the learning experience by asking the student: what do you want to make? All other lessons connect into project direction set by the student.
Along a similar theme, I recently encountered a cool podcast interviewing the founder of FreeCodeCamp.com, Quincy Larson. Quincy Larson worked in a traditional k-12 school working as a teacher. Along the way, he became interested in giving his fellow teachers more time by automating administrative computer tasks and creating systems for automatic grading. Through this experience, he became interested in learning to program professionally. After connecting with local makerspaces/hackathons, local meetups, and doing thousand of hours of study of MOOCs, he returned to his “teacher hat” and realized that many others might want to go on this journey too. He helped organize FreeCodeCamp.com to help other “campers” leverage resources and coaching he had gained. I’m very impressed with the scale of curriculum, community and effort to create local meetups in cities near you. While it’s easy to find YouTube videos or Mooc content to learn stuff, their teaching team acknowledges that learning as a local tribe in your local coffee shop or makerspace really helps to drive the learning forward. It’s very easy to get demotivated when you don’t have mentors or fellow students to go on the journey with you.
I do want to give a shout out to “The Change Log” podcast that shared this conversation. I haven’t been listening to them long, but I enjoy their content. https://changelog.com/podcast/195
FreeCodeCamp.com connects with the idea of community service learning by engaging real non-profits with real IT needs with their students. It’s a really neat “win-win” situation. The non-profit gets a cost effective solution. The students have a great learning experience addressing a local need while growing their web development skills.
On a personal level, I have enjoyed seeing students(young and old) become engaged with their path of learning through hackathons, makerspaces, and developer community. Why does community service learning matter? This feels like a unique flavor of project based learning since grass root connected learners work together to learn while making a difference in their community. The world needs more of this kind of innovation in education and community service.
I’m a big fan of the work of the AFrame.IO community. Thank you to Mozilla, Diego Marcos, Kevin Ngo, and Don McCurdy for their influence and effort to build a fun and productive platform for building WebVR experiences. For some of my amigos from DevFestFlorida 2017, I’ve collected a few Github repositories and resources to support you in building AFrame experiences.
Thanks to the efforts of many GDG leaders and Traversoft, you can check out my talk at DevFestFL in the following video. I had a great time connecting with other local web developers and sharing the WebVR love. Hope you enjoy the talk. And I hope you find the following links helpful.
If you live in Central Florida or Orlando, consider checking out our local chapter of Google developer Group. We enjoy building a fun creative community of developers, sharing ideas, code, and supporting each other in the craft of software. Learn more about our community here:
Really enjoyed touring Makerfaire Orlando this year. Thank you to all the organizers, volunteers, and maker spaces who made the event possible. I know it takes so much effort to organize and coordinate an inspiring event like this. I hope to unpack a few more stories from MakerFaire in future blog posts. I know that GDG Central Florida and my family had a great time!!
Hey, Orlando Google Developers! Central Florida Google Developer Group wants to invite you for a fun road trip to Orlando Maker Faire on Oct 21st! Maker Faire is a gathering of fascinating, curious people who enjoy learning and who love sharing what they can do. From engineers to artists to scientists to crafters, Maker Faire is a venue to for these “makers” to show hobbies, experiments, projects. MakerFaire events are called the greatest “show and tell” on the planet.
We believe that the road trip to Orlando MakerFaire will have the following impacts for our community: 1. It helps inspire our GDG tribe. 2. We want to expose GDG members to innovative ideas, tools, business concepts, and art that we leverage in the community. 4. It’s going to be REALLY fun!
Let us know that you’re interested in being a part of this meetup. We’ll kick-off with breakfast at 9:00am.
If you’re in the Florida area, I would like to invite you to the DevFest Florida 2017. All the Google developer groups in Florida have combined forces to throw an awesome developer party and learning conference. Join us for a great weekend of networking, learning, and hacking! Learn more at https://devfestflorida.org/.