Help us understand the problem. What is going on with this article?

Raspberry Piで定点カメラを作っていて、画像ファイルは保存しないでWebサーバーにアップロードしたい!と思ったら意外と簡単にできたというお話

More than 1 year has passed since last update.

はじめに

Raspberry Piを何個も使って色々と試しているなかで、定点カメラを作った時に撮影した画像を一時的にでもSDカードやRAMディスクなどに書き込まないでサーバーに送信できないだろうかと考えたら意外と簡単にできたので、まとめてみます。

用意するもの

  • Raspberry Pi
  • USBカメラ
  • Webサーバー

環境構築

Raspberry PiへのOSインストールは複数の記事があるのでそちらにお任せするとして、OSインストール直後の作業は以下のとおり。

sudo apt update
sudo timedatectl set-timezone Asia/Tokyo
sudo apt install -y python-opencv python-requests

送信スクリプト作成

以下の手順で送信スクリプトを作成

nano fileupload.py
fileupload.py
#!/usr/bin/env python

import cv2
import time
import requests
from datetime import datetime

cap = cv2.VideoCapture(0)

cap.set(3,1280)
cap.set(4, 720)

ret, frame = cap.read()

url = "http://[your server address]/getfile.rb"

files = {'imgData': cv2.imencode('.jpg', frame)[1].tobytes()}
res = requests.post(url, files=files)
print(res.text)

cap.release()

作成したら実行権限をファイルに付与

chmod a+x fileupload.py

受信スクリプト作成

受信するサーバーにはApacheとRubyがインストールしてあって、HTTPでアクセスができるようになっているものとして、以下の送信スクリプトを作成

getfile.rb
#!/usr/bin/env ruby

require "cgi"
require 'date'

formData = CGI.new

print "Content-type: text/html\n\n"

filename = Time.now.strftime("%Y%m%d%H%M")

open("#{filename}.jpg","wb") do |fh|
  fh.binmode
  fh.write formData['imgData'].read
end

puts "OK"

動作確認

送信・受信のスクリプトを設置したら、Raspberry Piで以下のように実行して「OK」と表示されればアップロード成功

./fileupload.py

自動撮影

10分間隔で自動的にアップロードするよう設定します。

crontab -e

以下の一行を追加

*/10 * * * * /home/pi/fileupload.py

できた!

mix_dvd
ExcelのマクロやWebアプリケーション、iOSアプリを作っています。 また、しまねソフト研究開発センター専門研究員の業務を受託しています。http://www.s-itoc.jp
http://blueomega.jp
s-itoc
しまねソフト研究開発センター(ITOC)はITを活用する企業の支援と研究開発の拠点です。
http://www.s-itoc.jp/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした