ためすう

cv2.GaussianBlur で画像をぼかす

2019-09-28

やったこと

OpenCVの cv2.GaussianBlur を使い、画像をぼかします。

確認環境

Google Colaboratory で試しました。

import cv2
print(cv2.__version__)
3.4.3

調査

import matplotlib.pyplot as plt
import cv2

img_bgr = cv2.imread('hogehoge.jpg')
img_rgb = cv2.cvtColor(img_bgr, cv2.COLOR_BGR2RGB)

result_img = cv2.GaussianBlur(img_rgb, (15, 15), 0)

plt.imshow(result_img)
plt.show()

参考

google_images_download を使ってみる

2019-09-28

やったこと

google_images_download を使い、画像ダウンロードしてみます。

確認環境

Google Colaboratory で試しました。

調査

pip インストール

!pip install google_images_download

キーワードを検索

MY_KEYWORD に取得したい画像のキーワードを入れます。

!googleimagesdownload --keywords "MY_KEYWORD" -f "jpg"

オプションは下記ページで確認できます。

Input Arguments — Google Images Download documentation

参考

Google Colaboratory で Google Drive の特定ディレクトリをマウントする

2019-09-25

やったこと

Google Colaboratory で Google Drive の特定ディレクトリをマウントしてみます。

確認環境

Google Colaboratory で試しました。

調査

パッケージ取得

!apt-get install -y -qq software-properties-common python-software-properties module-init-tools
!add-apt-repository -y ppa:alessandro-strada/ppa 2>&1 > /dev/null
!apt-get update -qq 2>&1 > /dev/null
!apt-get -y install -qq google-drive-ocamlfuse fuse

Google Cloud にアクセスする認証

from google.colab import auth
auth.authenticate_user()
from oauth2client.client import GoogleCredentials
creds = GoogleCredentials.get_application_default()

google-drive-ocamlfuse の認証

import getpass
!google-drive-ocamlfuse -headless -id={creds.client_id} -secret={creds.client_secret} < /dev/null 2>&1 | grep URL
vcode = getpass.getpass()
!echo {vcode} | google-drive-ocamlfuse -headless -id={creds.client_id} -secret={creds.client_secret}

設定ファイル書き換え

GOOGLE_DRIVE_FOLDER_ID には共有したいディレクトリのIDを入れます。

!cp -f ~/.gdfuse/default/config config
!sed -i -e "s/^root_folder=$/root_folder=GOOGLE_DRIVE_FOLDER_ID/" config
!mkdir -p drive
!google-drive-ocamlfuse -config ./config -cc drive
!ls drive

参考

Google Colaboratory で Google Drive をマウントする

2019-09-25

やったこと

Google Colaboratory で Google Drive をマウントしてみます。

確認環境

Google Colaboratory で試しました。

調査

from google.colab import drive
drive.mount('/content/drive')

これで Google Drive をマウントすることができました。

Google ドライブを確認できます。

ls drive/My\ Drive

特定のディレクトリをマウントする方法は別で調べます。

参考

Pytorch のエラー 'invalid index of a 0-dim tensor. Use tensor.item() to convert a 0-dim tensor to a Python number' を解消する

2019-09-24

やったこと

“invalid index of a 0-dim tensor. Use tensor.item() to convert a 0-dim tensor to a Python number” というエラーが発生したので、調査します。

確認環境

Google Colaboratory で試しました。

import torch
print(torch.__version__)

1.1.0

調査

問題となったコード <class 'torch.Tensor'> は0インデックスが使えないようです。

修正前

total_loss += loss.data[0]

修正後

total_loss += loss.data.item()

参考

OpenCV を使って、顔検出してみる

2019-09-23

やったこと

OpenCV を使って、顔検出してみます。

確認環境

$ python
Python 3.6.2 |Anaconda custom (64-bit)| (default, Sep 21 2017, 18:29:43)
[GCC 4.2.1 Compatible Clang 4.0.1 (tags/RELEASE_401/final)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
>>> cv2.__version__
'3.4.2'

調査

すでに学習済みの分類器を使います。 haarcascade_frontalface_alt.xml

import cv2
import sys
import os
import shutil

cascade_path = "./haarcascade_frontalface_alt.xml"

image_path=('/Users/himejima/Desktop/working/satomi-2/1451685134.jpg')
image = cv2.imread(image_path)
image_gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
cascade = cv2.CascadeClassifier(cascade_path)
facerect = cascade.detectMultiScale(image_gray, scaleFactor=1.2, minNeighbors=2, minSize=(10, 10))
## print("face rectangle")
## print(facerect)

if len(facerect) > 0:
  path = os.path.splitext(image_path)

for rect in facerect:
  # 顔だけ切り出して保存
  x = rect[0]
  y = rect[1]
  width = rect[2]
  height = rect[3]
  dst = image[y:y+height, x:x+width]
  new_image_path = './' + str(0) + path[1];
  # print(new_image_path)
  cv2.imwrite(new_image_path, dst)

参考

Python の shutil モジュールを使ってみる

2019-09-17

やったこと

shutil モジュールを使ってみます。

確認環境

$ python
Python 3.6.2 |Anaconda custom (64-bit)| (default, Sep 21 2017, 18:29:43)
[GCC 4.2.1 Compatible Clang 4.0.1 (tags/RELEASE_401/final)] on darwin
Type "help", "copyright", "credits" or "license" for more information.

調査

shutil モジュールはファイルやファイルの集まりに対する高水準の操作方法を多数提供します。

hoge ディレクトリがあるとします。

>>> import shutil
>>> shutil.rmtree('hoge')
>>> exit()

参考

Google Colaboratory で Google Drive にアクセスする

2019-09-17

やったこと

Google Colaboratory で Google Drive にアクセスしてファイルを読み込んでみます。

調査

# -*- coding: utf-8 -*-

# PyDrive のインストール
!pip install -U -q PyDrive

# ライブラリの読み込み
from pydrive.auth import GoogleAuth
from pydrive.drive import GoogleDrive
from google.colab import auth
from oauth2client.client import GoogleCredentials

# GoogleCloudSDK の認証
auth.authenticate_user()
gauth = GoogleAuth()
gauth.credentials = GoogleCredentials.get_application_default()
drive = GoogleDrive(gauth)

# 共有リンクで取得したもの
id = 'hogehoge'
downloaded = drive.CreateFile({'id': id})
downloaded.GetContentFile('./0.jpg')
ls
0.jpg   sample_data/

参考

numpy.savez を使ってみる

2019-09-16

やったこと

numpy.savez を使ってみます。

確認環境

$ python
Python 3.6.2 |Anaconda custom (64-bit)| (default, Sep 21 2017, 18:29:43)
[GCC 4.2.1 Compatible Clang 4.0.1 (tags/RELEASE_401/final)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import numpy as np
>>> np.__version__
'1.16.4'

調査

>>> a = np.arange(1, 10)
>>> a
array([1, 2, 3, 4, 5, 6, 7, 8, 9])
>>> np.savez('hoge.npz', x=a)
>>> f = np.load('./hoge.npz')
>>> f['x']
array([1, 2, 3, 4, 5, 6, 7, 8, 9])

ファイルを作成して、内容を読み込むこともできました。

参考

os.listdir を使ってみる

2019-09-16

やったこと

os.listdir を使ってみます。

確認環境

$ python
Python 3.6.2 |Anaconda custom (64-bit)| (default, Sep 21 2017, 18:29:43)
[GCC 4.2.1 Compatible Clang 4.0.1 (tags/RELEASE_401/final)] on darwin
Type "help", "copyright", "credits" or "license" for more information.

調査

準備

$ tree
.
├── aaa.txt
├── bbb.txt
├── ccc.txt
└── test.py

test.py

import os
i = os.listdir('./')
for target_file in i:
    print(target_file)

実行

出力結果

$ python test.py
ccc.txt
bbb.txt
test.py
aaa.txt