Open9
Python コードメモ
画像ファイルをバイナリデータに変換するプログラム
import io
from PIL import Image
import os
# path = os.getcwd()
# print(path)
# new_dir = os.path.join(path, f'')
# 画像の読み込み
img_path = r'画像パス'
img = Image.open(img_path, mode='r')
# 画像のリサイズ
# (width, height) = (img.width // 2, img.height // 2)
# img = img.resize((width, height))
# 画像をバイナリ変換
with io.BytesIO() as img_bytes:
img.save(img_bytes, format='PNG')
img_bytes = img_bytes.getvalue()
# img_bytes = io.BytesIO()
# img.save(img_bytes, format='PNG')
# img_bytes = img_bytes.getvalue()
print(img_bytes)
# バイナリから画像の表示
# img = Image.open(io.BytesIO(img_bytes))
# (width, height) = (img.width * 2, img.height * 2)
# img = img.resize((width, height))
# img.show()
Python OpenCV画像サイズチェック
import cv2
# 画像読み込み
img = cv2.imread(r"test.png")
# 縦、横、色の次元数
height, width, channels = img.shape
print(f"width : {width}")
print(f"height : {height}")
print(f"channels : {channels}")
読み込んだ画像の結果例▼
width : 512
height : 1024
channels : 3
処理時間の計測
import time
start = time.time()
time.sleep(3)
end = time.time()
print(end - start)
coloramaをクラスにまとめたもの
from colorama import Fore, Back, Style, init
class Color:
FORE_BLACK = Fore.BLACK # 黒
FORE_RED = Fore.RED # 赤
FORE_GREEN = Fore.GREEN # 緑
FORE_YELLOW = Fore.YELLOW # 黄
FORE_BLUE = Fore.BLUE # 青い
FORE_MAGENTA = Fore.MAGENTA # 赤紫色
FORE_CYAN = Fore.CYAN # シアン
FORE_WHITE = Fore.WHITE # 白い
FORE_RESET = Fore.RESET # リセット
##### ライン #####
BACK_BLACK = Back.BLACK # 黒
BACK_RED = Back.RED # 赤
BACK_GREEN = Back.GREEN # 緑
BACK_YELLOW = Back.YELLOW # 黄
BACK_BLUE = Back.BLUE # 青い
BACK_MAGENTA = Back.MAGENTA # 赤紫色
BACK_CYAN = Back.CYAN # シアン
BACK_WHITE = Back.WHITE # 白い
BACK_RESET = Back.RESET # リセット
STYLE_DIM = Style.DIM # 暗い
STYLE_NORMAL = Style.NORMAL # 正常
STYLE_BRIGHT = Style.BRIGHT # 明るく
STYLE_RESET_ALL = Style.RESET_ALL # スタイルリセット
class Escape:
SCREEN_CLEAR = "\033[2J" # 画面クリア
RIGHTMOST_CLEAR = "\033[0K" # カーソル位置からその行の右端までをクリア
LEFTMOST_CLEAR = "\033[1K" # カーソル位置からその行の左端までをクリア
CLEAR_ROW = "\033[2K" # カーソル位置の行をクリア
MOVING_RIGHT_ONE = "\033[1C" # カーソルを1行だけ右に移動
MOVING_RIGHT_TWO = "\033[2C" # カーソルを2行だけ右に移動
MOVING_RIGHT_THREE = "\033[3C" # カーソルを3行だけ右に移動
MOVING_LEFT_ONE = "\033[1D" # カーソルを1行だけ左に移動
MOVING_LEFT_TWO = "\033[2D" # カーソルを2行だけ左に移動
MOVING_LEFT_THREE = "\033[3D" # カーソルを3行だけ左に移動
UNDER_MOVE_ONE = "\033[1B" # カーソルを1行だけ下に移動
UNDER_MOVE_TWO = "\033[2B" # カーソルを2行だけ下に移動
UNDER_MOVE_THREE = "\033[3B" # カーソルを3行だけ下に移動
ABOVE_MOVE_ONE = "\033[1A" # カーソルを1行だけ上に移動
ABOVE_MOVE_TWO = "\033[2A" # カーソルを2行だけ上に移動
ABOVE_MOVE_THREE = "\033[3A" # カーソルを3行だけ上に移動
python バージョン
import random
u = 0
c = random.randint(0, 2)
def judgeMatch(user, cpu):
# python 3.10以上
match (user - cpu + 3) % 3:
case 0:
return "あいこ"
case 2:
return "勝ち"
case _:
return "負け"
def judgeIf(user, cpu):
result = (user - cpu + 3) % 3
if result == 0:
return "あいこ"
elif result == 2:
return "勝ち"
else:
return "負け"
print(judgeMatch(u, c))
ファイル保存するときに使えるコード
import os
def save_dir(save_dirs):
for i in save_dirs:
if not os.path.isdir(i):
os.makedirs(i)
save_dirs = ['output\img']
save_dir(save_dirs)
現在の日付と時間取得
import datetime
now = datetime.datetime.now().strftime('%Y%m%d%H%M%S')
whisperインストール
pip install git+https://github.com/openai/whisper.git
import whisper
import torch
from whisper.audio import N_FRAMES, pad_or_trim, log_mel_spectrogram
from whisper.tokenizer import get_tokenizer
import time
def voiceRecognition(audio):
MODEL = whisper.load_model(r'base.pt')
# binary_data = log_mel_spectrogram(r'test\test.wav')
binary_data = log_mel_spectrogram(audio)
# 30秒データに整形
segment = pad_or_trim(binary_data, N_FRAMES).to(MODEL.device).to(torch.float16)
# デコード
deco = MODEL.decode(segment)
# トークナイザ取得
tokenizer = get_tokenizer(multilingual=True, language="ja", task="transcribe")
# トークナイザのデコード
result = tokenizer.decode(deco.tokens)
return result
if __name__ == "__main__":
res = voiceRecognition
高速で使えるfaster-whisperを推奨
ct2-transformers-converter --model openai/whisper-large-v2 --output_dir model/faster-whisper-large-v2 --copy_files tokenizer.json --quantization int8_float16