[vc_row][vc_column width=”1/1″][vc_column_text]As mentioned before, we can use guvcview to capture the stream video as a image. So is it possible to DIY a simple camera?
Sure, and it is very easy![/vc_column_text][vc_tour][vc_tab title=”Pre-requisites:” tab_id=”1449218350-1-4″][vc_column_text]
- Hardware
- pcDuino8 Uno
- USB UVC camera
- Software
- Ubuntu 14.04
- Python 2.7.6
- OpenCV 2.4.11
[/vc_column_text][/vc_tab][vc_tab title=”Steps” tab_id=”1449218350-2-22″][vc_column_text]
1. Connect
To make it simple, I just connect GPIO0 to GND via a Dupont line. Insert or pull out the line to simulate pressing or releasing a button.
Note: you should know the status that described as the following table.
Connection | Status | Logic |
---|---|---|
Pull out from GND port, without loading | High level | 1 |
Insert to GND port | Low level | 0 |
2. Run
$ git clone https://github.com/pcduino/pcduino8-uno-guide $ cd pcduino8-uno-guide/demo/1.CameraDIY/ $ python camera.py
- The window show the video from webcam in realtime.
- Pull out the Dupont line from GND port and insert into GND port again.
- The photo will be saved to the current directory.
- View the photo.
$ gpicview
[/vc_column_text][/vc_tab][vc_tab title=”Source code” tab_id=”1449218699835-2-3″][vc_column_text]
import argparse import datetime import time import cv2 import gpio btn_pin = "gpio0" gpio.pinMode(btn_pin, gpio.INPUT) camera = cv2.VideoCapture(0) time.sleep(0.25) while True: #read the button status current_st = gpio.digitalRead(btn_pin) (grabbed, frame) = camera.read() if not grabbed: break cv2.putText(frame, datetime.datetime.now().strftime("%A %d %B %Y %I:%M:%S%p"), (10, frame.shape[0] - 10), cv2.FONT_HERSHEY_SIMPLEX, 0.35, (0, 0, 255), 1) cv2.imshow("video",frame) next_st = gpio.digitalRead(btn_pin) #check the button status has been changed # if yes, save as a image to local if current_st ^ next_st : name = datetime.datetime.now().strftime("%Y%m%d%H%M%S") cv2.imwrite(name+".jpg", frame, [int(cv2.IMWRITE_JPEG_QUALITY),100]) key = cv2.waitKey(1) if key == ord("q"): break camera.release() cv2.destroyAllWindows()
[/vc_column_text][/vc_tab][/vc_tour][/vc_column][/vc_row][vc_row][vc_column width=”1/1″][/vc_column][/vc_row]
Leave a Reply
You must be logged in to post a comment.