ためすう
pow を使ってみる (C++)
2019-10-01やったこと
pow を使ってみます。
確認環境
$ g++ --version
g++ (Homebrew GCC 9.2.0) 9.2.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
調査
test.cpp
#include <bits/stdc++.h>
using namespace std;
int main() {
std::cout << "pow(3.0, 2.0) = " << std::pow(3.0, 2.0) << std::endl;
std::cout << "pow(5.0, 3.0) = " << std::pow(5.0, 3.0) << std::endl;
}
出力結果
pow(3.0, 2.0) = 9
pow(5.0, 3.0) = 125
参考
^ 演算子を使ってみる (C++)
2019-09-30やったこと
^ 演算子 (排他的論理和) を使ってみます。
確認環境
$ g++ --version
g++ (Homebrew GCC 9.2.0) 9.2.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
調査
xor.cpp
#include <bits/stdc++.h>
using namespace std;
int main() {
// 0b -> 2進数を表す
int a = 0b11010110;
int b = 0b01110101;
cout << std::bitset<8>(a ^ b) << "\n";
}
出力結果
10100011
参考
upper_bound と lower_bound を使ってみる (C++)
2019-09-30やったこと
下記メソッドを使ってみます。
- upper_bound
- lower_bound
確認環境
$ g++ --version
g++ (Homebrew GCC 9.2.0) 9.2.0
Copyright (C) 2019 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
調査
upper_bound
指定された要素より大きい値が現れる最初の位置のイテレータを取得する
lower_bound
指定された要素以上の値が現れる最初の位置のイテレータを取得する。
lower_upper.cpp
#include <bits/stdc++.h>
using namespace std;
int A[10] = {1, 3, 3, 5, 7};
int main() {
printf("%d\n", *upper_bound(A, A + 5, 3));
printf("%d\n", *lower_bound(A, A + 5, 3));
printf("%d\n", upper_bound(A, A + 5, 3));
printf("%d\n", lower_bound(A, A + 5, 3));
printf("%d\n", upper_bound(A, A + 5, 3) - lower_bound(A, A + 5, 3));
}
出力結果
5
3
117379276
117379268
2
参考
cv2.threshold を使ってみる
2019-09-29やったこと
OpenCV の cv2.threshold を使ってみます。
確認環境
Google Colaboratory で試しました。
import cv2
print(cv2.__version__)
3.4.3
調査
import matplotlib.pyplot as plt
import cv2
fig = plt.figure(figsize=(10, 5))
img_bgr = cv2.imread('hoge.jpg')
img_rgb = cv2.cvtColor(img_bgr, cv2.COLOR_BGR2RGB)
fig.add_subplot(1, 3, 1)
ret_val, result_img = cv2.threshold(img_rgb, 95, 128, cv2.THRESH_TOZERO)
plt.imshow(result_img)
fig.add_subplot(1, 3, 2)
ret_val, result_img = cv2.threshold(img_rgb, 100, 255, cv2.THRESH_BINARY)
plt.imshow(result_img)
fig.add_subplot(1, 3, 3)
plt.imshow(img_rgb)
plt.show()
参考
cv2.erode を使ってみる
2019-09-28やったこと
OpenCV の cv2.erode を使ってみます。
確認環境
Google Colaboratory で試しました。
import cv2
print(cv2.__version__)
3.4.3
調査
import matplotlib.pyplot as plt
import numpy as np
import cv2
img_bgr = cv2.imread('hoge.jpg')
img_rgb = cv2.cvtColor(img_bgr, cv2.COLOR_BGR2RGB)
fig = plt.figure(figsize=(10, 5))
filter_one = np.ones((3, 3))
my_filter = np.array([[1, 0, 0], [1, 0, 0], [1, 0, 0]], np.uint8)
fig.add_subplot(1, 3, 1)
result_img = cv2.erode(img_rgb, filter_one)
plt.imshow(result_img)
fig.add_subplot(1, 3, 2)
result_img = cv2.erode(img_rgb, my_filter)
plt.imshow(result_img)
plt.show()
参考
cv2.flip で画像を反転する
2019-09-28やったこと
OpenCVの cv2.flip を使い、画像を反転します。
確認環境
Google Colaboratory で試しました。
import cv2
print(cv2.__version__)
3.4.3
調査
import matplotlib.pyplot as plt
import cv2
fig = plt.figure(figsize=(10, 5))
img_bgr = cv2.imread('hoge.jpg')
img_rgb = cv2.cvtColor(img_bgr, cv2.COLOR_BGR2RGB)
fig.add_subplot(1, 3, 1)
# 上下反転
result_img = cv2.flip(img_rgb, 0)
plt.imshow(result_img)
fig.add_subplot(1, 3, 2)
# 左右反転
result_img = cv2.flip(img_rgb, 1)
plt.imshow(result_img)
fig.add_subplot(1, 3, 3)
# 上下左右反転
result_img = cv2.flip(img_rgb, -1)
plt.imshow(result_img)
plt.show()
参考
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 の特定ディレクトリをマウントしてみます。
確認環境
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
特定のディレクトリをマウントする方法は別で調べます。