Loading

Pythonを使ってみませんか?[新刊情報]

こんにちは、さやです🐰

今回紹介するのは『日経Linux 3月号』です。

今月号では、Linuxの入門から「Python」「電子工作」「AI」「サーバー」という4つの活用法について学べる特集や、性能が大幅に向上した「Raspberry pi 4 Model B」を検証・活用する特集が掲載されています!


今月号の中で私が気になった記事は、『「Python」を使ってみよう』という記事です。

私が1回生の授業で習ったのはC言語だけだったので、その他の言語も勉強したいと考えていた私にぴったりの記事でした😊

Pythonは文法がシンプルでプログラミング初心者におすすめな言語とされています!
計算・統計処理で使用できるライブラリ(アプリケーションで利用するためにまとめられたプログラム集)が豊富で、近年注目を集めている人工知能深層学習(Deep learning)の分野でも支持を得ています。

今月号では『step1:Pythonを使うための環境を構築』『step2:基本文法の習得』『step3:応用例』
というようにスリーステップにわけて掲載されていたので、初心者の私でも読みやすかったです😊


ほかにも、
▽Linuxインストール方法

▽Linuxのアプリを使いこなすための特集

などが掲載されています。

この本は7号館入口の書架に置かれています!
春休みの今は大学に来ることが少ないかもしれませんが、機会があれば読んでみてください😊

以上、さやでした~

 

 

Raspberry Piで遊ぼう! 【フレーム差分法の紹介】

どもー、たなかです!
たなか「なんか唐突にRaspberry Piで遊びたい!」
と言ったわけで、Raspberry Piで監視カメラを作ろうと思います!
まあ、「ラズパイで遊ぶ」&「監視カメラを作る」しか決まってないので
とりあえず、適当にやるかということで


監視カメラと言ったらとりあえず
カメラを使って映像をリアルタイムに表示出来るようにすればいいので
PythonのOpenCVを利用して↓のようにWebカメラを利用して表示した!

import cv2

capture = cv2.VideoCapture(0)

while(True) :
ret, flame = capture.read()
cv2.imshow('Raw Flame', flame)

k = cv2.waitKey(1)
if k == 27 : #escを押すと終了

break

capture.release()
cv2.destroyAllWindows()

とりあえず、これを使えばwebカメラからの映像が見れます!
「監視カメラの映像を見る」というのには、成功したので
次の段階へ


では、ラズパイで映像をどうやって送るか…
やっぱり、監視カメラは遠隔で見たいじゃないですか!
ということで、私が考えた方法は、何かしらが動いたら写真を撮り、それをネットのなんかでアップするという方法です!

では、今度はWebカメラで写真を撮るプログラムを作成しよう!

import cv2

cam = cv2.VideoCapture(0)
img = cam.read()[1] cv2.imwrite("sample.jpg", img)

cam.release()

↓のように撮れました!


何かしら動いたらどうして反応させるか

「フレーム差分法」というアルゴリズムを使って撮影させよう!
詳しくはこちら

んで、ソースコードをどうぞ

import cv2

save_path = "./save_image/"

camera = cv2.VideoCapture(0)

img1 = img2 = img3 = get_image(camera)

th = 300
n = 1

while True :

if cv2.waitKey(1) == 27 :

break

diff = check_image(img1, img2, img3)

cnt = cv2.countNonZero(diff)

if cnt > th :

print("taked image")
cv2.imshow('PUSH ENTER KEY', img3)
cv2.imwrite(save_path + str(n) + ".jpg", img3)
n += 1

else :

cv2.imshow('PUSH ENTER KEY', img3)
img1, img2, img3 = (img2, img3, get_image(camera))

camera.release()
cv2.destroyAllWindows()

def get_image(camera) :

img = camera.read()[1] return img

def check_image(img1, img2, img3) :

gray1 = cv2.cvtColor(img1, cv2.COLOR_RGB2GRAY)
gray2 = cv2.cvtColor(img2, cv2.COLOR_RGB2GRAY)
gray3 = cv2.cvtColor(img3, cv2.COLOR_RGB2GRAY)

diff1 = cv2.absdiff(gray1, gray2)
diff2 = cv2.absdiff(gray2, gray3)

dif_and = cv2.bitwise_and(diff1, diff2)

_, dif_wb = cv2.threshold(dif_and, 30, 255, cv2.THRESH_BINARY)
diff = cv2.medianBlur(dif_wb, 5)
return diff

これで、以下のような写真が撮れました!

これらが3枚撮れて
これの差分を撮った写真がこれです!

差分だけでgifファイルを作るとこんな感じ


といった感じで、ラズパイで遊んでいます!(現在の進捗状況はここまで)
フレーム間差分法ではなく、これをTensorflowの機械学習で認識させたいので
これからも遊びたいと思います!
以上!