応用プログラミング及び実習 2021年度 ex05

工事中

注意

notebook のセルを実行していると,たまにセルの番号のところが [*] となったままで反応が返ってこなくなるときがあります. ありがちな状況と対処法を書いときます

  1. 単に処理に時間がかかってるだけ → 待てばいい
  2. input( ) が入力待ってる → 入力欄になんか入力して Enter
  3. いつまで待ってもだめ → ウィンドウ上部の「■」ボタンを押して,そのセルの実行を強制的に停止させる

ex05A

ex05kadaiA.ipynb

  1. 上記のリンク先から notebook ファイルをダウンロードして開く
    • notebook の扱い方を忘れたひとは こちら
  2. そこに記された指示にしたがって notebook を編集・実行して保存
  3. その notebook ファイルを以下の提出場所へ提出

注意: 文章をきちんと読んでもらえばわかりますが, P2 のところに書いてある「文字列を入力したら,単語内の文字をひっくり返して出力してくれるようにする問題を考えます」というのは,P2の最終目標ではなく,この課題と次の課題(ex05B)全体での目標です. P2 で(またはP4までで)「文字列を入力したら,単語内の文字をひっくり返して出力してくれる」処理を完成させろと言っているわけではありません.

提出場所: この科目の Moodle コース の「ex05課題A」

ex05B

ex05A のつづきで,文字列を入力したら単語内の文字をひっくり返して出力してくれるプログラムを作りましょう. 名前は ex05reverse.py としてください(名前間違えないように).

step1

次のような関数 reverseSentence() の定義を書いて,動作確認しよう.

step2

プログラムの末尾に,次のコードを挿入して実行しよう.読み込むファイルはこちら: ex05msg.txt

fn = "ex05msg.txt"
with open(fn, "r", encoding="utf-8") as f:  # ファイル名 fn のファイルを読み込みモードで開く
    for line in f:        # ファイルから1行ずつ読み込んでループ
        print(line)       # そのまま表示

上記の for 文の中を修正して,読み込んだファイルの各行に reverseSentence() を適用した結果を出力するようにしてください.

step3

プログラムの末尾に次のようなコードを追加して動作確認しましょう(姓名や学籍番号は自分ので). 確認できたら,提出しましょう.

myID = "A01055   ほげ   ほげお"   #  学籍番号,姓,名を空白区切りで
print(reverseSentence(reverseSentence(myID)))

提出場所: この科目の Moodle コース の「ex05課題B」

ex05S (omake)

これはおまけ課題です.やらなくても減点はありません.やったら棒茄子?

画像処理してみよう

blackuni3.png

  1. 以下では OpenCV という,コンピュータビジョン(コンピュータに人間のような視覚をもたせる方法を考える研究開発分野)のためのライブラリを利用します.次のようにしてインストールしてください(macのひとはpip3).
    pip install  opencv-python
  2. 上記の画像を手元に保存しなさい.
  3. 次のプログラムを実行しなさい.ファイル名は ex05S.py としよう.
    import cv2           # OpenCV モジュール
    
    # 画像の読み込み
    img = cv2.imread('blackuni3.png')
    if img is None:
        print('File Not Found')
    print(img.shape)  # 正しく読み込めたら, img は NumPy の3次元配列になる(カラーの場合)
    
    # 画像を表示
    cv2.imshow("hoge", img)
    cv2.waitKey(0)   # 画像を表示したウィンドウ内で何かキーが押されるまで待つ
    
    # 画像を書き込み
    cv2.imwrite("hoge.png", img)
    
  4. 上記の画像とは別の画像を使って実行してみよう.
  5. 上記を書き換えて遊ぼう.ただし,次の処理を必ず行うこと.情報収集は「opencv python ほげ」でウェブ検索したりがよいだろう.
    • 左右and/or上下反転
    • 色反転(画素値を反転させる)
    • ググると bitwise_notを使う方法が出てくるでしょう.それを使う場合,それでなぜ画素値の反転ができるのかを考えて,コメントとして書いてください
    • bitwise_not を使わない場合,「255から元の画素値を引く」で実現できます.こちらのやり方する場合も,それでなぜできるのかをコメントに書きましょう
    • 画像の大きさを変える
    • 適当に上記のもの以外の何か面白い処理を追加

(おまけのおまけ)カメラ付きのPCまたはウェブカメラを持ってるひとは,以下のプログラムを実行してみるとよいでしょう.

import cv2

cap = cv2.VideoCapture(0)

while(True):
    rv, frame = cap.read()
    cv2.imshow('hoge', frame)
    if cv2.waitKey(1) == ord('q'):
        break
        
cap.release()
cv2.destroyAllWindows()

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS