CamShow – webcam document visualiser application for educators

CamShow is a simple desktop application for teachers, lecturers or anyone who wants to demonstrate little things up on a big screen.

CamShow in action
CamShow in action

The short version is this- it’s a little app that lets you use a webcam to show real, physical documents on your PC (and therefore your smartboard), and it has a vertical flip option in case you want to mount the camera at the rear of your table.

Longer, admittedly boring, version spills more of the development background, and includes the links to the current version of the source code, if you want to modify it yourself. If you have improvements or bug reports, please let me know!

Hardware

As a teacher, it’s incredibly useful to be able to share documents with your class on an ad-hoc basis. For example, highlighting a passage in a book, or wanting to give a shout out to great work by a student. It’s not practical to dash out and run up a bunch of copies in the middle of class. What you need is a visualiser or document camera. These used to be common in schools, and you might still have one knocking around in the form of a video camera-based model, looking something like this:

Aver-PL50, a typical document camera/visualiser
Aver-PL50, a typical document camera/visualiser

Having it be a webcam instead of video is great, as you won’t need extra power, just one USB cable plugged into your desktop PC that is running your smartboard. It also means you can capture video and/or screenshots to upload to your MLE for archiving or later review. The majority of these devices these days are, effectively, webcams. The pricier models support illumination from below, somewhat like the old OHP machines, and direct hardware button based controls.

I wanted to go cheap, so I could just prove the concept was workable and useful.

I selected the TeckNet C016 webcam,. Let’s go over the features, to see if this is right for you.
Firstly, it’s pretty cheap, at around £11.

TeckNet C016
TeckNet C016

Secondly, it’s a reasonable resolution at 720p (not Full HD, but most of the way there). You don’t need more than that for presentations unless you’ve got great lighting conditions, a great projector, and a huge screen- otherwise little details can’t be seen anyway. It will help to have more- if the image quality is also high- when it comes to screenshots though.
Thirdly, it has white LED lights to illuminate the document- but they’re not powerful enough to add much in the normal classroom. It ought to help quite a bit if you’ve got the blinds drawn.
Fourthly, it’s manual focus. That’s far better than fixed focus for most of us- it allows a sharp image even if the object we’re viewing is taller than a single flat sheet of paper. Compared to autofocus, it’s swings and roundabouts. I prefer manual- it does what I tell it to do, and won’t be thrown off by my hand or a pen wandering into shot. And if you’re showing a book, you’ll likely set it once and never need to adjust it again. It can focus pretty darned closely, too.

Macro capability of Tecknet C016 focused on a 20 pence coin and a penny.
Macro capability of Tecknet C016 focused on a 20 pence coin and a penny.

Fifthly, it’s not very wide angle compared to some webcams. Again, this is a “six of one, half a dozen of the other” deal.
Sixthly, it has a mounting thread to attach it to a stand. However, it’s 16mm metric thread, and not the camera standard of 1/4″ UNC thread. A terrible design decision.

That last issue had me mulling over various possible solutions. I opted to purchase some nuts of the right size (the aforementioned 1/4″ UNC, in stainless steel, and with a nylon insert to keep things snug). They were a fraction wider than the one they were replacing, so I heated one of the nuts up enough to push it into place. I thought it might stick to the melted plastic, but it didn’t, so a dab of superglue did the trick.

webcam mount (modified)
webcam mount (modified)

Now it could mount to any number of camera mounting accessories, like tripods, or, as I picked, a spring camp mated to a gooseneck. It should be fine, but it doesn’t have a lot of leeway when it comes to very thick tabletops, due to the clamp, very wide tables (gooseneck lacks reach), or where the item is quite big (partly the fault of the camera not being wide angle enough). Time will tell. For documents, you can’t zoom far out anyway before the text is illegible to the kids in the back row.

webcam in use 3/4 view
webcam in use 3/4 view

spring clamp
spring clamp

Spring clamp with gooseneck attachment
Spring clamp with gooseneck attachment

Software

Despite some reviews of the camera, I had no issues getting my Windows 10 Home 64bit (Creator’s Edition update) to recognise the camera. No drivers were asked for, and opening up the Camera app that came with Windows, got a view of myself. I thought I might be home and dry, but for one missing feature- if I was to mount the camera from the rear of the table, to keep hand access clear, then the camera would be upside down. And then, so would the image. Yes, I could rotate the document, but that makes it hard for me to read. What I needed was a simple switch to flip the image coming out of the webcam, and the Camera app didn’t have this.

I decided to roll my own, keeping the interface as simple as possible, but with the vertical flip option. CamShow was what I can up with. It’s written as a Windows Presentation Foundation (WPF) desktop project, written in XAML and C#, using Visual Studio 2015.

My objective was to keep things simple, with minimal on-screen furniture, and few features to avoid confusing people with things they’ll never need anyway. Just options to select the webcam, resolution, buttons to go full screen, pause video (you can also hit spacebar), or bring up camera adjustment options. And you can hide these away.

I might add a framegrab/screenshot button, but most people would be happy with hitting PrtScr. The adjustment options dialogue is auto-generated by the AForge.net library querying the camera’s capabilities, so I’m not sure how I could simplify that and still have it work on all cameras. Perhaps that’s why exposure compensation didn’t work with the TeckNet webcam, despite working with my laptop’s internal camera? I could make a Tecknet C016 only version, or do detection of known supported models, displaying simplified options if it matched hardware IDs, hmmm…

Source code is hosted on GitHub, and available here.

Leave a Reply

Your email address will not be published. Required fields are marked *