ラベル Python の投稿を表示しています。 すべての投稿を表示
ラベル Python の投稿を表示しています。 すべての投稿を表示

2025年5月27日火曜日

webカメラを起動し、写真を撮影するPythonプログラム

import cv2
import datetime
import os

# 保存用ディレクトリを作成(なければ作る)
save_dir = "captured_images"
os.makedirs(save_dir, exist_ok=True)

# カメラのデバイス番号(0が基本)
camera_index = 0
cap = cv2.VideoCapture(camera_index)

if not cap.isOpened():
    print("カメラを開けませんでした")
    exit()

# 解像度を設定したい場合(任意)
# cap.set(cv2.CAP_PROP_FRAME_WIDTH, 1280)
# cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 720)

while True:
    ret, frame = cap.read()

    if not ret:
        print("フレームを取得できませんでした")
        break

    cv2.imshow("USB Camera2", frame)

    key = cv2.waitKey(1) & 0xFF

    # 's' キーで画像保存
    if key == ord('s'):
        timestamp = datetime.datetime.now().strftime("%Y%m%d_%H%M%S")
        filename = os.path.join(save_dir, f"capture_{timestamp}.jpg")
        cv2.imwrite(filename, frame)
        print(f"画像を保存しました: {filename}")

    # 'q' キーで終了
    elif key == ord('q'):
        break

# 終了処理
cap.release()
cv2.destroyAllWindows()

参考Youtube:webカメラを起動し、写真撮影するPythonプログラム

2025年1月10日金曜日

Python:画像ファイルをcsvファイルの情報に基づいて、現在のディレクトリのフォルダに移動させるプログラム

 import os

import shutil

import csv


def move_images_to_folders(csv_file):

    """

    画像ファイルを、CSVファイルの情報に基づいて現在のディレクトリのフォルダに移動する関数


    Args:

        csv_file (str): CSVファイルのパス

    """


    # CSVファイルを読み込む

    with open(csv_file, 'r') as f:

        reader = csv.reader(f)

        file_info = {row[0]: row[1] for row in reader}


    # 画像ファイルを移動 (最大100回試行)

    max_retry = 100

    for i in range(0001, 2001):

        for _ in range(max_retry):

            filename = f"{i:04d}b.jpeg"

            filepath = filename

            if os.path.exists(filepath):

                dest_folder = file_info[filename]

                os.makedirs(dest_folder, exist_ok=True)

                shutil.move(filepath, dest_folder)

                print(f"Moved {filename} to {dest_folder}")

                break

            else:

                i += 1  # ファイルが見つからない場合、次の番号に

                print(f"File {filename} not found. Trying next.")


# CSVファイルのパスを指定

csv_file = "test.csv"


move_images_to_folders(csv_file)


以下、説明

・shutil: pythonのモジュール。shell utilitiesの略。ファイルの操作などをすることができる。

・csvファイルの分類に従って、ファイルをフォルダに移動させるプログラム。ファイル名が抜けていると、そこでプログラムが止まってしまうので、100回ループさせて、それでもファイルがなければ、次の番号のファイルに移るようにプログラムを改良した。

2024年10月14日月曜日

Python -Vで「Python」としか返ってこないときは

 windowsのターミナルで「python -V」と打てば、通常はpythonのバージョン情報が返ってくるが、「Python」としか返ってこないときは、windowsエイリアスの項目のうち、pythonのところをオフにする。場所は「アプリ」>>「アプリの詳細設定」>>「アプリ実行エイリアス」の「アプリインストーラー」(python.exeとpython3.exe)

それでも、ダメだったら、windows上のpathを確認する。

参考リンク:【Windows 11対応】Path環境変数を設定/編集して、独自のコマンドを実行可能にする

参考リンク:【Python】WindowsでPythonインストールしてもバージョンが出ない…

2024年9月24日火曜日

python:ファイルを読み込んで、内容を表示するプログラム

 #! /usr/bin/python3

with open('test.txt','r',encoding='utf-8') as file:

    content = file.read()

print(content)

#!(シェバン)の由来

 pythonのなどのプログラムを書く際に、インタプリタを呼び出すため、冒頭に#!(shebang:シェバン)という記号を書く必要がある。一瞬、#と!のうち、どちらが先かわからなくなったので、由来を調べてみた。

#=Hash、!=Bang つなげてHashBangとなり、略してShbangとなったようだ。

参考リンク:「#!」 (SheBang)の語源を徹底追求 「切り刻んでビックリ」

python:forループ文

 Pythonのfor文は、リストや文字列などのシーケンスの各要素に対して繰り返し処理を行うための構文です。基本的な書き方は以下の通りです

for 変数 in シーケンス:

実行する処理


例えば、リスト内の各要素を順番に出力するコードは次のようになります。

words = ['Japanese', 'English', 'French']

for  word in words:

    print(word)


#出力

Japanese

English

French


また、特定の回数だけ繰り返し処理を行いたい場合には、range関数を使います。例えば、0から9までの数字を出力するコードは次の通りです。

for num in range(10):

print(num)


#出力

0

1

2

3

4

5

6

7

8

9


更に、breakやcontinueを使ってループ制御を行うこともできます。例えば、特定の条件でループを終了する場合はbreakを使います。

for num in range(10):

   if num == 5:

   break

   print(num)


#出力

0

1

2

3

4

range関数の3つの形式

range関数の3つの形式

1.range(stop) 0からstopまでの整数を生成します(stopは含まれません)

for i in range(5):

print(i)

#出力 0,1,2,3,4


2.range(start,stop) startからstopまでの整数を生成します(stopは含まれません)

for i in range(2,5):

print(i)

#出力 2,3,4


3.range(start,stop,step) startからstopまでの整数をstepの間隔で生成します(stopは含まれません)

for i in range(1,10,2):

print(i)

#出力 1,3,5,7,9

2024年6月5日水曜日

VScodeにおける仮想環境venvの作り方

 python -m venv <仮想環境を作りたいフォルダ名>

仮想環境を起動するには、そのフォルダに行って「./Activate.ps1」を実行する。

仮想環境が実行されているかどうかは、現在いるディレクトリの前に(仮想環境フォルダ名)と表示されているかどうかでわかる。

抜けるときは「deactivate」で抜けることができる。


参考リンク

【Python入門】venv仮想環境の使い方を習得してVS Codeでの開発をスムーズに!

VS CodeでPythonの仮想環境を構築する(windows)

2024年5月20日月曜日

WindowsにVScodeとPythonをインストールして実行する方法

 主な手順

1.Pythonをインストール

2.VSCodeをインストール

3.VScodeでPythonを実行できるようにする(拡張機能→Python)

4.Pythonコードを書いて、ターミナルで実行する。

参考リンク:ターミナルでPythonを実行

Pythonコンソールを閉じる方法

 Pythonのコマンドが走ると、プロンプト記号が >>> に変わりました。 これは、今Pythonの言語を実行できますという意味です。 >>> はタイプしなくていいですよ ? Pythonがあなたの代わりにやってくれます。

Pythonコンソールを終了したい時は、exit() とタイプするか、ショートカット Ctrl + Z(Windows)、Ctrl + D(Mac/Linux)を使ってください。 そうするともう >>> は出なくなります。

参考リンク:Python入門

2022年2月16日水曜日

ubuntu20.04(wsl2)へのpython3のインストール

apt install -y python3.10 python3.10

と打ち込んで、python3.10をインストールできなかったので、

sudo apt install software-properties-common -y

sudo add-apt-repository ppa:deadsnakes/ppa -y

と打ち込んでから、再度、「apt install -y python3.10 python3.10」と打つとインストールできた。


次に以下のよう打って、python3から呼び出せるようにした。

update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.10

update-alternatives --config python3


最後に、pip3をインストール。

apt install -y python3-pip


参考リンク:Ubuntu 21.04 へ Python 3.10 をインストールする

2022年1月27日木曜日

pipトラブル

 pip -Vでもバージョンが表示されず、「python -m pip install --upgrade pip」も効かなかったが、「python -m ensurepip」で再インストールできた。

参考リンク1:Pythonを完全にアンインストールする方法

参考リンク2


2022年1月23日日曜日

WindowsからPythonを完全に削除する方法

 WindowsからPythonを完全に削除したつもりでも、Python(の特定のバージョン)フォルダやPipフォルダが残っている場合があるので、その時は手動で完全に削除する。

参考リンク:Pythonを完全にアンインストールする方法(Windows)

2022年1月12日水曜日

WindowsにおけるPython

 Windows10の1903からPythonがデフォルトで下の場所にインストールされている。

C:\Users\{ユーザー名}\AppData\Local\Microsoft\WindowsApps\python.exe

 自分でPythonを別の場所にインストールするときなどは注意する。

また、pythonコマンドではなく、pyコマンドで呼び出すことも多い。

pyコマンドで呼び出せるバージョンは 「py -V」で表示可能。


2021年1月4日月曜日

言語処理100本ノック 問題12

 問. popular-names.txtは,アメリカで生まれた赤ちゃんの「名前」「性別」「人数」「年」をタブ区切り形式で格納したファイルである.以下の処理を行うプログラムを作成し,popular-names.txtを入力ファイルとして実行せよ.さらに,同様の処理をUNIXコマンドでも実行し,プログラムの実行結果を確認せよ

各行の1列目だけを抜き出したものをcol1.txtに,2列目だけを抜き出したものをcol2.txtとしてファイルに保存せよ.確認にはcutコマンドを用いよ.

 

解答例

import pandas as pd
df = pd.read_table('./popular-names.txt', header=None, sep='\t', names=['name', 'sex', 'number', 'year']) 

#col1の定義 dfの中からnameを取り出して、col1と定義

col1 = df['name']

#pandasのto_csv関数を使う
col1.to_csv('./col1.txt', index=False)

#col1の冒頭5行を書き出す
print(col1.head())

 

 出力

0         Mary
1         Anna
2         Emma
3    Elizabeth
4       Minnie
5     Margaret
6          Ida
7        Alice
8       Bertha
9        Sarah
Name: name, dtype: object 

 

確認:ubuntuで実行

cut -f 1 ./popular-names.txt > ./col1_chk.txt

cat ./col1_chk.txt | head -n 5

出力

Mary
Anna
Emma
Elizabeth
Minnie

 

参考リンク

【言語処理100本ノック 2020】第2章: UNIXコマンド