Pythonを使ってmedu4テキストを赤シート対応にする方法(Goodnotes5+赤シート)
はじめに
medu4のテキストを赤シートで暗記したい方へ
https://medu4.com/topics/bcc60304edより抜粋
Pythonでこの問題を解決しました。
実際の画像↓
Goodnotes5には選択した文字の色を変換する機能がありますが、手動なので面倒です。そんな時はPythonを使いましょう!
・Python 3.9.13で動作確認済み
・Pythonの環境構築の方法は記事に含まれていません
Pythonに触れたことがない方はこれをきっかけに勉強してみてください。
おすすめ教材
↓
手順(ソースコード含む)
1.goodnotesファイルをイメージとして書き出す
2.書き出したフォルダのパスを入力し、Pythonファイルに名前をつけて保存
import os
from tqdm import tqdm
import cv2
#画像が入っているフォルダのパス
dir = "{ここにパスを入力}"
def detect_rectangle_and_change_color(img_path, height):
# 画像を読み込む
img = cv2.imread(img_path)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 長方形を検出する
ret, thresh = cv2.threshold(gray, 200, 255, 0)
contours, _ = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
for contour in contours:
x, y, w, h = cv2.boundingRect(contour)
if w > 100 and h > height - 10 and h < height + 10: # 長方形のサイズをチェック
roi = img[y:y+h, x:x+w]
# 赤色の文字を薄いオレンジ色(#FFF1B6)に変更
mask = (roi[:, :, 2] >= 1.25 * roi[:, :, 1]) & (roi[:, :, 2] >= 1.25 * roi[:, :, 0])
roi[mask] = [182, 241, 255]
# 画像を保存
cv2.imwrite(img_path, img)
# 実行
pathes = os.listdir(dir)
for path in tqdm(pathes):
detect_rectangle_and_change_color(os.path.join(dir, path), 80)
コードの説明
cv2で適切な大きさの長方形(穴埋め部分)を検出し、長方形内部の赤みがかったピクセルを自分が指定した色(ここでは#FFF1B6)に変換しています。
3.ターミナルでpython実行
pythonファイル名がred2orange.pyなら
python red2orange.py
4.フォルダ内のjpgファイルをまとめてpdf変換し、goodnotes5に新規書類として読み込む
5.完成。
赤シートが使えるようになります。
注意点
・iPadのNight Shiftがオンの場合は文字がうっすら見えるので、オフにしてみてください。
・自分の場合、2-3%の頻度で正しく変換されない箇所がありました。修正するのはやや面倒です。goodnotesから書き出す前に修正しておけば、ある程度ミスは防げます。
また、画像にした後は消しゴムではなく白ペンを使用してください。
以下、変換に失敗した例
最後に
pythonの環境構築が面倒な方は、google colaboratory+Google driveマウントでできると思うので試してみてください。
何か分からないことがあれば、自分か周りの友達かChatGPTに相談してください。
この記事が気に入ったらサポートをしてみませんか?