2021年6月6日日曜日

csvファイルをチェックする


import csv

f = open("XXXXXXXXXXXX.csv")

reader = csv.reader(f)

target_aria = 0

for row in reader:

    #地区名を表示
    if target_aria != row[4]:
        print(sum)
        target_aria=row[4]
        print("===============")
        print(row[2] + " " + row[4] + "start")
        sum=0
    else:
        #外国人がいる地域を表示
        #print(row[12])
        if row[12].isdecimal():
            if int(row[12]) != 0:
                sum = sum + int(row[12])

f.close()

2021年5月5日水曜日

osモジュールの使い方 python

概要

pythonでosのコマンド実行する際に、osモジュールをよく使っていたので、改めて使い方をまとめてみました。
公式のドキュメントを見ると、subprocessモジュールに置き換えることが推奨されているので、そっちのほうを覚えたほうがいいかもしれません。

メソッド名 説明
os.system 引数で与えられたコマンド(文字列)を実行します。
os.popen 引数で与えられたコマンド(文字列)を実行して、
その結果を変数に格納するときに使います。

使用例

pwdコマンドをos.systemとos.popenで使ってみます。
# coding: utf-8

import os

print("-----------------")
system_r = os.system("pwd")
print(system_r)
print("-----------------")
popen_r = os.popen("pwd").read().rstrip()
print(popen_r)
print("-----------------")
  

os.systemの方はコマンドを実行して、実行結果を戻り値で返していますが、os.popenの方はread()関数を使うと、実行結果が変数に格納されて、print関数を使わないと中身が表示されませんでした。

pi@raspberrypi:~ $ python3 os_test.py
-----------------
/home/pi
0
-----------------
/home/pi
-----------------
  

subprocessモジュールに置き換える場合の使用例


同じことをsubprocessモジュールで実行する場合には以下のように書きます。
# coding: utf-8
import subprocess

print("-----------------")
system_r = subprocess.call("pwd")
print(system_r)
print("-----------------")
popen_r = subprocess.check_output("pwd").decode(encoding='utf-8').rstrip()
print(popen_r)
print("-----------------")
  

2021年4月28日水曜日

lobeを使った機械学習のマスク判定について

概要

機械学習を扱う装置を作る際、学習モデルをlobeで作っているのですが、マスク処理を行った画像の判定論理が気になったので調べてみました。


やったこと

  1. 右下にクマがいる画像とクマがいない画像を5枚ずつ登録
  2. その状態で左上にクマがいる画像を判定できるか
  3. →期待は「bear」だったが、「no_bear」だった。
  4. 判定できるようになるまでに何枚の画像を登録する必要がるのか
  5. →左上にクマがいる画像を追加で11枚登録したら、「bear」と認識するようになった。
  6. 判定できるようになったとき、右下に画像がある情報を判定できるか
  7. →右下にクマがいない画像を判定したところ、期待は「no_bear」だったが「bear」と判定された。

結論

  • マスク処理を行う場合は同じ場所をマスク処理したもので学習モデルを作ったほうが良い。
  • 判定に使うための情報はラベルごとに同じ枚数のデータを学習させたほうが良い。
いわれてみれば、当たり前のことなんだけども。

2021年4月27日火曜日

ビーコン検知

概要

ビーコンを3秒周期で検知してその結果をキューに貯めます。
貯めたキューは7個まで保存できて、要素の多い宛先を選択します。


# coding: utf-8

import bluepy

def get_uuid():
  scanner = bluepy.btle.Scanner(0)
  devices = scanner.scan(3) #3秒のスキャンデータ

  rssi_dic = {}
  rssi_dic2 = {}

  #アドレスとRSSIをディクショナリに登録
  for device in devices:
    rssi_dic[device.addr] = str(device.rssi)

  #ディクショナリを昇順に並べ替え
  rssi_dic2 = sorted(rssi_dic.items(), key=lambda x:x[1])

  #一番強いRSSIを返す
  ret = rssi_dic2[0][0]

  #RSSIが-40以下ならunknown
  if int(rssi_dic2[0][1]) <= -40:
    ret = "unknown"
  return ret

def main():

  from collections import Counter

  check_uuid = []

  i = 0
  while True:

    check_uuid.append(str(get_uuid()))
    uuid_ranking = Counter(check_uuid).most_common()
    best_uuid = uuid_ranking[0][0]

    if len(check_uuid) >= 7 :
      check_uuid.pop(0)


if __name__ == "__main__":
  main()

2021年4月3日土曜日

Pythonで画像に四角形を描く

概要

windowsにあるファイルに対して、pythonで四角形を描写する方法です。
画像の解像度によって座標は変わると思うのでよく確認する必要があると思います

サンプルコード

デスクトップにある、「tomato.jpg」に四角形の線を描画して、「sq_tomato.jpg」というファイル名で保存します。
import cv2

in_img = "C:\\Users\\redpe\\Desktop\\tomato.jpg"
out_img = "C:\\Users\\redpe\\Desktop\\sq_tomato.jpg"

img = cv2.imread(in_img)
cv2.rectangle(img, (1250, 250), (4250, 2600), color=(255, 0, 0), thickness=8)
cv2.imwrite(out_img, img, [cv2.IMWRITE_JPEG_QUALITY, 100])

Pythonでマスク画像を合成

概要

windowsのデスクトップ上にあるファイルにマスク画像を合成する方法です。
cv2モジュールを使ってます。

サンプルコード

デスクトップ上に置いている、「tomato.jpg」に「mask.jpg」を合成して、「mask_tomato.jpg」を作成しています。
上下に余計な情報があって、マスクしたいときはこのようにします。

import cv2

path="C:\\Users\\redpe\\Desktop\\tomato.jpg"
maskfile = "C:\\Users\\redpe\\Desktop\\mask.jpg"
maskimg= "C:\\Users\\redpe\\Desktop\\mask_tomato.jpg"

#マスク処理
src1 = cv2.imread(path)
src2 = cv2.imread(maskfile)
src2 = cv2.resize(src2, src1.shape[1::-1])
dst = cv2.bitwise_and(src1, src2)
cv2.imwrite(maskimg, dst)

pythonでカラー画像から白黒画像を作成

概要

Pythonを使ってwindows上のファイルを白黒にする方法です。
cv2を使って画像を加工します。

サンプルコード

デスクトップに置かれている「tomato.jpg」というファイルを読み込んで、白黒の「gray_tomato.jpg」というファイルを作成する方法は以下です。

import cv2

path="C:\\Users\\redpe\\Desktop\\tomato.jpg"
grayimg="C:\\Users\\redpe\\Desktop\\gray_tomato.jpg"

img=cv2.imread(path)

#グレースケール処理
gray_cv = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)
cv2.imwrite(grayimg, gray_cv)