[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
ラベル Python の投稿を表示しています。 すべての投稿を表示
ラベル Python の投稿を表示しています。 すべての投稿を表示

2024年8月29日木曜日

Ubuntu24.04にLangFlowをインストールする

Ubuntu24.04でpipenvを使用してLangFlowをインストールするには、以下の手順を実行します。

1.pipenvのインストール
sudo apt-get -y install python3-pip python3-dev python3-testresources pipenv 

echo "export PIPENV_VENV_IN_PROJECT=true" >> ~/.profile

source ~/.profile

2. LangFlowをインストール
mkdir ~/langflow

cd ~/langflow

pipenv install langflow

3. LangFlowをサービスとして登録
※ユーザ名・パスは適宜変更してください。
cat << EOF | sudo tee /etc/systemd/system/langflow.service
[Unit]
Description=LangFlow
[Service]
Type=simple
ExecStart=/home/ubuntu/langflow/.venv/bin/langflow run --host 0.0.0.0
User=ubuntu
Group=ubuntu
WorkingDirectory=/home/ubuntu/langflow
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
EOF

sudo systemctl enable langflow

sudo systemctl start langflow

4. ブラウザでLangFlowにアクセスします。

http://ホスト名またはIPアドレス:7860

2024年1月24日水曜日

CPUだけで高速にAI画像を生成できるFastSD CPUをUbuntu22.04にインストールする

FastSD CPUでGPUを使用しなくても高速にAI画像を生成することができます。

インストール方法 Ubuntu22.04にFastSD CPUをインストールするには以下の手順を実行します。
sudo apt-get -y install python3.10-venv

wget https://github.com/rupeshs/fastsdcpu/archive/refs/tags/v1.0.0-beta.23.tar.gz

tar xvfz ./v1.0.0-beta.23.tar.gz

cd fastsdcpu-1.0.0-beta.23/

chmod +x install.sh

※server外からwebuiにアクセスしたい場合は以下のファイルを変更します。
vi src/frontend/webui/ui.py
以下の行を
webui.launch(share=share)
以下に変更
webui.launch(share=share, server_name='0.0.0.0')

./start-webui.sh

ブラウザから以下にアクセスします
http://{ubuntuのIP}:7860

サンプル画像

2024年1月8日月曜日

Ubuntu 22.04にOpenCVをインストールしてネットワークカメラの画像を保存する

Ubuntu 22.04にOpenCVをインストールしてネットワークカメラの画像を保存するには、以下の手順を実行します。

1.pipenvのインストール
sudo apt-get -y install python3-pip python3-distutils python3-dev python3-testresources

python3 -m pip install --user pipenv

echo "export PIPENV_VENV_IN_PROJECT=true" >> ~/.profile

echo 'export PATH=$PATH:$HOME/.local/bin' >> ~/.profile

source ~/.profile

2. opencvをインストールした環境を作成
mkdir dev_opencv
※ディレクトリは適宜変更してください
cd dev_opencv

pipenv --python 3

pipenv install opencv-python

pipenv shell

3. RTSPプロトコルで配信されたカメラ画像を保存するプログラムの作成と実行 test.py
import cv2

# RTSPのURLは適宜適宜変更してください
RTSP_URL = 'rtsp://xxx.xxx.xxx.xxx:8554/cam'
cap = cv2.VideoCapture(RTSP_URL, cv2.CAP_FFMPEG)
result, image = cap.read()
if result:
    cv2.imwrite("camera.png", image)

実行
python test.py

2023年12月26日火曜日

GPU無しでStreamDiffusionが実行できるJupyterLabをインストールする(Ubuntu 22.04)

StreamDiffusionで高速にAI画像を生成することができます。
JupyterLab上でStreamDiffusionをインストールするには以下の手順を実行します。

1.pipenvのインストール
sudo apt-get -y install python3-pip python3-distutils python3-dev python3-testresources

python3 -m pip install --user pipenv

echo "export PIPENV_VENV_IN_PROJECT=true" >> ~/.profile

echo 'export PATH=$PATH:$HOME/.local/bin' >> ~/.profile

source ~/.profile

2. Jupyterのインストール
sudo mkdir -p /mnt/data/jupyter
※パスは適宜変更してください

sudo chown ubuntu:ubuntu /mnt/data/jupyter
※ユーザ名・グループ名は適宜変更してください

cd /mnt/data/jupyter

pipenv --python 3


pipenv install jupyterlab

pipenv install matplotlib

pipenv install pandas

3. Dream Diffusionのインストール
sudo apt-get -y install git

git clone https://github.com/cumulo-autumn/StreamDiffusion.git

cat << EOF >> Pipfile
[[source]]
url = "https://download.pytorch.org/whl/cu121"
verify_ssl = false
name = "pytorch"
EOF

pipenv install torch==2.1.0 torchvision==0.16.0 xformers --index=pytorch

pipenv install git+https://github.com/cumulo-autumn/StreamDiffusion.git@main#egg=streamdiffusion[tensorrt]

pipenv install accelerate

4. モデルのダウンロード
cd /mnt/data/jupyter/StreamDiffusion/models/Model

wget -4 https://huggingface.co/KBlueLeaf/kohaku-v2.1/resolve/main/kohaku-v2.1.safetensors
※必要に応じて他のモデルもダウンロードしてください。

5. Jupyter Labをサービスとして登録
cat << EOF | sudo tee /etc/systemd/system/jupyter.service
[Unit]
Description=Jupyter
[Service]
Type=simple
Environment=HF_HOME=/mnt/data/jupyter/StreamDiffusion/models/Model
ExecStart=/mnt/data/jupyter/.venv/bin/jupyter lab --port 8080 --ip=0.0.0.0 --allow-root --NotebookApp.token='jupyter'
User=ubuntu
Group=ubuntu
WorkingDirectory=/mnt/data/jupyter
Restart=always
RestartSec=10
[Install]
WantedBy=multi-user.target
EOF
※ディレクトリ、ユーザ、トークンは適宜変更してください

sudo systemctl enable jupyter

sudo systemctl start jupyter

6. ブラウザでJupyterにアクセスしてNotebookに以下のコードを貼り付けます。
http://{Jupyterをインストールしたホスト}:8080/lab?token=jupyter

Notebookに貼り付けるコードは以下です。デバイスにCPUを指定して、GPUなしのマシンでも画像を生成することができます。

import sys
sys.path.append("/mnt/data/jupyter/StreamDiffusion")

import torch
from utils.wrapper import StreamDiffusionWrapper

# モデル
model_id_or_path = "/mnt/data/jupyter/StreamDiffusion/models/Model/kohaku-v2.1.safetensors"
# 画像サイズ
width = 512
height = 512
# seed
seed = 2
# プロンプト
prompt="1girl and 1dog walking riverside under blue sky"
negative_prompt=""

stream = StreamDiffusionWrapper(
    model_id_or_path=model_id_or_path,
    t_index_list=[0, 16, 32, 45],
    frame_buffer_size=1,
    width=width,
    height=height,
    warmup=10,
    acceleration="none",
    mode="txt2img",
    use_denoising_batch=False,
    cfg_type="none",
    seed=seed,
    device="cpu",
    dtype=torch.float32,
)

stream.prepare(
    prompt=prompt,
    negative_prompt=negative_prompt,
    num_inference_steps=50,
)

for _ in range(stream.batch_size - 1):
    stream()
output_image = stream()
output_image

実行結果

2023年2月13日月曜日

Raspberry Pi OS(Bullseye)/Debian 11にSpyderをインストールする

SpyderはオープンソースのPyton統合開発環境です。

〇Spyderの画面(Raspberry Pi)

〇Spyderの画面(Debian 11 Bullseye)

インストール方法 以下の手順を実行します。
sudo apt-get update

sudo apt-get -y install spyder

関連情報 ・Spyderのgithubリポジトリ
https://github.com/spyder-ide/spyder

2023年1月22日日曜日

JupyterLab AppをAlmaLinux 9/Rocky Linux 9にインストールする

JupyterLab AppでJupyterLabをDesktopアプリケーションとして実行できるようになります。

〇JupyterLab Appの画面(AlmaLinux 9)

〇JupyterLab Appの画面(Rocky Linux 9)

インストール方法 以下のコマンドを実行します。
wget https://github.com/jupyterlab/jupyterlab-desktop/releases/download/v3.5.0-1/JupyterLab-Setup-Fedora.rpm

sudo dnf -y install ./JupyterLab-Setup-Fedora.rpm

関連情報 ・JupyterLab Appのgithubリポジトリ
https://github.com/jupyterlab/jupyterlab_app

2023年1月4日水曜日

Ubuntu22.04にffmpeg-pythonをインストールした仮想環境を作成し、動画形式変換する

ffmpeg-pythonでFFmpegを操作して動画形式の変換などを行うことが出来ます。Ubuntu22.04にffmpeg-pythonをインストールした仮想環境を作成し、動画形式変換するには以下の手順を実行します。

インストール方法 1.pipenvのインストール
pipenvをインストールしていない場合は、以下のコマンドを実行します。
sudo apt-get update

sudo apt-get -y install python3-pip python3-distutils python3-dev

python3 -m pip install --user pipenv

echo "export PIPENV_VENV_IN_PROJECT=true" >> ~/.profile

echo 'export PATH=$PATH:$HOME/.local/bin' >> ~/.profile

source ~/.profile

2. ffmpeg-python用の仮想環境作成
pipenvを使用する場合は以下のコマンドで、ffmpeg-python用の仮想環境を作成します。
sudo apt-get -y install ffmpeg

mkdir -p ~/ffmpeg-python

cd ~/ffmpeg-python

pipenv --python 3

pipenv install ffmpeg-python

pipenv shell

3. mp4ファイル形式からWebM形式に変換するサンプルプログラムの実行
以下のサンプルプログラムでriceplant.mp4ファイルをriceplant.webmに変換します。

conv_mp4_to_webm.py
import ffmpeg

input = ffmpeg.input('./riceplant.mp4')
ffmpeg.output(input, './riceplant.webm').run()

・実行コマンド
python conv_mp4_to_webm.py

〇変換後画像

関連情報 ・ffmpeg-pythonに関する他の記事はこちらを参照してください。

・様々な動画に関するアプリケーションについては、以下のまとめを参照してください。
動画関連アプリケーションのまとめ

2022年9月5日月曜日

Raspberry Pi OS(Raspbian Bullseye)にPySimpleGUIとOpenCVをインストールしてwebカメラの映像をウインドウに表示する

PySimpleGUIとOpenCVをインストールしてwebカメラの映像をウインドウに表示するには、以下の手順を実行します。webカメラはUSBカメラのものを使用します。

実行手順 1.pipenvのインストール
pipenvをインストール済みでない場合は、以下のコマンドでインストールします。
sudo apt-get update

sudo apt-get -y install python3-pip python3-distutils python3-dev

sudo pip3 install --upgrade setuptools

pip3 install --user pipenv

echo "export PIPENV_VENV_IN_PROJECT=true" >> ~/.bashrc

echo 'export PATH=$PATH:~/.local/bin' >> ~/.bashrc

source ~/.bashrc

2. PySimpleGUIとOpenCVをインストールした仮想環境の作成
mkdir -p ./psgui-opencv

cd ./psgui-opencv

pipenv --python 3

pipenv install pysimplegui

pipenv install numpy

pipenv install opencv-python

pipenv install opencv-contrib-python

pipenv shell

サンプル実行手順 以下のファイルを保存して、実行します。
psgui_opencv.py
mport PySimpleGUI as sg
import cv2

sg.theme('SystemDefault')
layout = [
  [sg.Image(key='img1')]
]

# webカメラをキャプチャー
capture = cv2.VideoCapture(0)
window = sg.Window("webカメラ画面", layout=layout, finalize=True)
# イベントループ
while True:
  rv, frame = capture.read()
  if rv is True:
    # キャプチャーした画像をpngに変換
    img = cv2.imencode('.png', frame)[1].tobytes()
    # Imageの内容を更新
    window['img1'].update(data=img)

  event, values = window.read(timeout=0)
  if event == sg.WIN_CLOSED:
    break

capture.release()
window.close()

〇実行コマンド
python3 psgui_opencv.py

〇実行結果
webカメラの内容がウインドウに表示されます。

〇動作環境
Raspberry Pi OS (Raspbian Bullseye)

関連情報 ・Raspberry Pi OS(Raspbian Bullseye)にPySimpleGUIをインストールして、簡単なウインドウを表示する

2022年9月1日木曜日

AlmaLinux 9にSpyderをインストールする

SpyderはオープンソースのPyton統合開発環境です。

〇Spyderの画面

インストール方法 以下の手順を実行します。
wget https://repo.anaconda.com/archive/Anaconda3-2022.05-Linux-x86_64.sh

sudo chmod +x Anaconda3-2022.05-Linux-x86_64.sh

sudo ./Anaconda3-2022.05-Linux-x86_64.sh -b -p /opt/anaconda

echo 'export PATH=$PATH:/opt/anaconda/bin' >> ~/.bashrc

source ~/.bashrc

cat << EOF | sudo tee /usr/share/applications/spyder.desktop
[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Exec=/opt/anaconda/bin/spyder
Icon=/opt/anaconda/share/icons/spyder.png
Name=Spyder
Categories=Development;
EOF

関連情報 ・SPyderに関する他の情報はこちらを参照してください。

2022年8月26日金曜日

Raspberry Pi OS(Raspbian Bullseye)にPySimpleGUIをインストールして、簡単なウインドウを表示する

PySimpleGUIでGUIを簡単に作成する事が出来ます。

インストール方法 1.pipenvのインストール
sudo apt-get update

sudo apt-get -y install python3-pip python3-distutils python3-dev

sudo pip3 install --upgrade setuptools

pip3 install --user pipenv

echo "export PIPENV_VENV_IN_PROJECT=true" >> ~/.bashrc

echo 'export PATH=$PATH:~/.local/bin' >> ~/.bashrc

source ~/.bashrc

2. PySimpleGUI用の仮想環境作成
pipenvを使用する場合は以下のコマンドで、PySimpleGUI用の仮想環境を作成します。
sudo apt-get -y install python3-tk tk-dev

mkdir -p ~/pysimplegui

cd ~/pysimplegui

pipenv --python 3

pipenv install PySimpleGUI

pipenv shell

サンプル実行手順 以下のファイルを保存して、実行します。
sample1.py
import PySimpleGUI as sg

sg.theme('SystemDefault')
layout = [[sg.Text('サンプルです')]]

window = sg.Window('サンプル', layout)
# イベントループ
while True:
    event, values = window.read()
    if event == sg.WIN_CLOSED:
        break

window.close()

実行コマンド
python sample1.py

〇実行結果
以下の小さなウインドウが表示されます。

2022年8月14日日曜日

Ubuntu 22.04にPyCharm2022.2.2をインストールする

PyCharmはPython言語のIDEです。

〇PyCharmの画面

インストール方法 以下のコマンドを実行します。
wget https://download.jetbrains.com/python/pycharm-community-2022.2.tar.gz

tar xvfz pycharm-community-2022.2.tar.gz

sudo mv pycharm-community-2022.2 /opt/pycharm-community

cat << EOF | sudo tee /usr/share/applications/pycharm.desktop
[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Exec=/opt/pycharm-community/bin/pycharm.sh
Name=PyCharm
Icon=/opt/pycharm-community/bin/pycharm.png
Categories=Development;
EOF

関連情報 ・PyCharmに関する他の記事は、こちらを参照してください。

2022年7月29日金曜日

Ubuntu 22.04でpymediainfoを使用して動画・音声ファイルのメタ情報を取得する

pymediainfoを使用してPythonから動画・音声ファイルのメタ情報を取得する事ができます。

インストール方法 1. pipenvをインストールしていない場合は、以下のコマンドを実行します。
sudo apt-get update

sudo apt-get -y install python3-pip python3-distutils python3-dev

python3 -m pip install --user pipenv

echo "export PIPENV_VENV_IN_PROJECT=true" >> ~/.profile

echo 'export PATH=$PATH:$HOME/.local/bin' >> ~/.profile

source ~/.profile

2. pymediainfoのインストール
sudo apt-get update

sudo apt-get -y install mediainfo libjpeg-dev

pipenv --python 3

pipenv install pymediainfo

サンプルプログラム ファイル中のトラックから、コーデックの種類や解像度などの情報を一覧表示します。
※ファイル名は適宜変更してください
mi.py
from pymediainfo import MediaInfo

mi = MediaInfo.parse("/home/debian/hydrangea.mp4")
for track in mi.tracks:
  print("--------------------------")
  for mykey, myvalue in track.to_data().items():
    print("key: {}, value:{}".format(mykey, myvalue))

〇実行例
pipenv run python mi.py
--------------------------
key: track_type, value:General
key: count, value:333
key: count_of_stream_of_this_kind, value:1
key: kind_of_stream, value:General
key: other_kind_of_stream, value:['General']
key: stream_identifier, value:0
key: count_of_video_streams, value:1
key: count_of_audio_streams, value:1
key: video_format_list, value:AVC
key: video_format_withhint_list, value:AVC
key: codecs_video, value:AVC
key: video_language_list, value:English
key: audio_format_list, value:AAC LC
key: audio_format_withhint_list, value:AAC LC
key: audio_codecs, value:AAC LC
key: audio_language_list, value:English
key: complete_name, value:/home/debian/hydrangea.mp4
key: folder_name, value:/home/debian
key: file_name, value:hydrangea.mp4
key: other_file_name, value:['hydrangea']
key: file_extension, value:mp4
key: format, value:MPEG-4
key: other_format, value:['MPEG-4']
key: format_extensions_usually_used, value:mov mp4 m4v m4a m4b m4p m4r 3ga 3gpa 3gpp 3gp 3gpp2 3g2 k3g jpm jpx mqv ismv isma ismt f4a f4b f4v
key: commercial_name, value:MPEG-4
key: format_profile, value:Base Media / Version 2
key: internet_media_type, value:video/mp4
key: codec_id, value:mp42
key: other_codec_id, value:['mp42 (isom/mp42)']
key: codec_id_url, value:http://www.apple.com/quicktime/download/standalone.html
key: codecid_compatible, value:isom/mp42
key: file_size, value:134478747
key: other_file_size, value:['128 MiB', '128 MiB', '128 MiB', '128 MiB', '128.2 MiB']
key: duration, value:61065
key: other_duration, value:['1 min 1 s', '1 min 1 s 65 ms', '1 min 1 s', '00:01:01.065', '00:01:01:02', '00:01:01.065 (00:01:01:02)']
key: overall_bit_rate, value:17617784
key: other_overall_bit_rate, value:['17.6 Mb/s']
key: frame_rate, value:30.000
key: other_frame_rate, value:['30.000 FPS']
key: frame_count, value:1832
key: stream_size, value:26507
key: other_stream_size, value:['25.9 KiB (0%)', '26 KiB', '26 KiB', '25.9 KiB', '25.89 KiB', '25.9 KiB (0%)']
key: proportion_of_this_stream, value:0.00020
key: headersize, value:3249
key: datasize, value:134452248
key: footersize, value:23250
key: isstreamable, value:No
key: encoded_date, value:UTC 2020-06-12 05:37:22
key: tagged_date, value:UTC 2020-06-12 05:37:22
key: file_last_modification_date, value:UTC 2020-06-12 05:37:22
key: file_last_modification_date__local, value:2020-06-12 14:37:22
key: xyz, value:+00.0000+000.0000/
key: comandroidversion, value:8.0.0
--------------------------
key: track_type, value:Video
key: count, value:376
key: count_of_stream_of_this_kind, value:1
key: kind_of_stream, value:Video
key: other_kind_of_stream, value:['Video']
key: stream_identifier, value:0
key: streamorder, value:1
key: track_id, value:2
key: other_track_id, value:['2']
key: format, value:AVC
key: other_format, value:['AVC']
key: format_info, value:Advanced Video Codec
key: format_url, value:http://developers.videolan.org/x264.html
key: commercial_name, value:AVC
key: format_profile, value:High@L4
key: format_settings, value:CABAC / 1 Ref Frames
key: format_settings__cabac, value:Yes
key: other_format_settings__cabac, value:['Yes']
key: format_settings__reframes, value:1
key: other_format_settings__reframes, value:['1 frame']
key: format_settings__gop, value:M=1, N=30
key: internet_media_type, value:video/H264
key: codec_id, value:avc1
key: codec_id_info, value:Advanced Video Coding
key: duration, value:61065
key: other_duration, value:['1 min 1 s', '1 min 1 s 65 ms', '1 min 1 s', '00:01:01.065', '00:01:01:02', '00:01:01.065 (00:01:01:02)']
key: bit_rate, value:17458076
key: other_bit_rate, value:['17.5 Mb/s']
key: width, value:1920
key: other_width, value:['1 920 pixels']
key: height, value:1080
key: other_height, value:['1 080 pixels']
key: stored_height, value:1088
key: sampled_width, value:1920
key: sampled_height, value:1080
key: pixel_aspect_ratio, value:1.000
key: display_aspect_ratio, value:1.778
key: other_display_aspect_ratio, value:['16:9']
key: rotation, value:0.000
key: frame_rate_mode, value:VFR
key: other_frame_rate_mode, value:['Variable']
key: frame_rate, value:30.000
key: other_frame_rate, value:['30.000 FPS']
key: minimum_frame_rate, value:29.841
key: other_minimum_frame_rate, value:['29.841 FPS']
key: maximum_frame_rate, value:30.141
key: other_maximum_frame_rate, value:['30.141 FPS']
key: frame_count, value:1832
key: standard, value:NTSC
key: color_space, value:YUV
key: chroma_subsampling, value:4:2:0
key: other_chroma_subsampling, value:['4:2:0']
key: bit_depth, value:8
key: other_bit_depth, value:['8 bits']
key: scan_type, value:Progressive
key: other_scan_type, value:['Progressive']
key: bits__pixel_frame, value:0.281
key: stream_size, value:133263312
key: other_stream_size, value:['127 MiB (99%)', '127 MiB', '127 MiB', '127 MiB', '127.1 MiB', '127 MiB (99%)']
key: proportion_of_this_stream, value:0.99096
key: title, value:VideoHandle
key: language, value:en
key: other_language, value:['English', 'English', 'en', 'eng', 'en']
key: encoded_date, value:UTC 2020-06-12 05:37:22
key: tagged_date, value:UTC 2020-06-12 05:37:22
key: colour_description_present, value:Yes
key: colour_description_present_source, value:Stream
key: color_range, value:Limited
key: colour_range_source, value:Stream
key: color_primaries, value:BT.601 PAL
key: colour_primaries_source, value:Stream
key: transfer_characteristics, value:BT.601
key: transfer_characteristics_source, value:Stream
key: matrix_coefficients, value:BT.470 System B/G
key: matrix_coefficients_source, value:Stream
key: mdhd_duration, value:61065
key: codec_configuration_box, value:avcC
--------------------------
key: track_type, value:Audio
key: count, value:278
key: count_of_stream_of_this_kind, value:1
key: kind_of_stream, value:Audio
key: other_kind_of_stream, value:['Audio']
key: stream_identifier, value:0
key: streamorder, value:0
key: track_id, value:1
key: other_track_id, value:['1']
key: format, value:AAC
key: other_format, value:['AAC LC']
key: format_info, value:Advanced Audio Codec Low Complexity
key: commercial_name, value:AAC
key: format_additionalfeatures, value:LC
key: codec_id, value:mp4a-40-2
key: duration, value:60970
key: other_duration, value:['1 min 0 s', '1 min 0 s 970 ms', '1 min 0 s', '00:01:00.970', '00:01:00:38', '00:01:00.970 (00:01:00:38)']
key: source_duration, value:61071
key: other_source_duration, value:['1 min 1 s', '1 min 1 s 71 ms', '1 min 1 s', '00:01:01.071']
key: source_duration_firstframe, value:100
key: other_source_duration_firstframe, value:['100 ms', '100 ms', '100 ms', '00:00:00.100']
key: bit_rate_mode, value:CBR
key: other_bit_rate_mode, value:['Constant']
key: bit_rate, value:156000
key: other_bit_rate, value:['156 kb/s']
key: channel_s, value:2
key: other_channel_s, value:['2 channels']
key: channel_positions, value:Front: L R
key: other_channel_positions, value:['2/0/0']
key: channel_layout, value:L R
key: samples_per_frame, value:1024
key: sampling_rate, value:48000
key: other_sampling_rate, value:['48.0 kHz']
key: samples_count, value:2926560
key: frame_rate, value:46.875
key: other_frame_rate, value:['46.875 FPS (1024 SPF)']
key: frame_count, value:2858
key: source_frame_count, value:2858
key: compression_mode, value:Lossy
key: other_compression_mode, value:['Lossy']
key: stream_size, value:1188928
key: other_stream_size, value:['1.13 MiB (1%)', '1 MiB', '1.1 MiB', '1.13 MiB', '1.134 MiB', '1.13 MiB (1%)']
key: proportion_of_this_stream, value:0.00884
key: source_stream_size, value:1188928
key: other_source_stream_size, value:['1.13 MiB (1%)', '1 MiB', '1.1 MiB', '1.13 MiB', '1.134 MiB', '1.13 MiB (1%)']
key: source_streamsize_proportion, value:0.00884
key: title, value:SoundHandle
key: language, value:en
key: other_language, value:['English', 'English', 'en', 'eng', 'en']
key: encoded_date, value:UTC 2020-06-12 05:37:22
key: tagged_date, value:UTC 2020-06-12 05:37:22
key: mdhd_duration, value:60970

2022年7月28日木曜日

Ubuntu 22.04上のpipenv環境にopencv-pythonを入れて動画の情報を取得する

OpenCVを使用して動画の情報を取得することもできます。以下の手順でopencv-pythonをインストールして動画の解像度や長さを取得します。

インストール手順 1. pipenvのインストール
sudo apt-get update

sudo apt-get -y install python3-pip python3-distutils python3-dev

python3 -m pip install --user pipenv

echo "export PIPENV_VENV_IN_PROJECT=true" >> ~/.profile

echo 'export PATH=$PATH:$HOME/.local/bin' >> ~/.profile

source ~/.profile

2. opencv-pythonをインストールした仮想環境の作成
mkdir -p ~/opencv-python

cd ~/opencv-python

pipenv --python 3

pipenv install opencv-python

3. プログラムの作成と実行
※適宜入力ファイル名は変更してください
show_videoinfo.py
import cv2
videofile = "./hydrangea.mp4"
cv2video = cv2.VideoCapture(videofile)

width  = cv2video.get(cv2.CAP_PROP_FRAME_WIDTH)
height = cv2video.get(cv2.CAP_PROP_FRAME_HEIGHT)
print("解像度: {}x{}".format(width, height))

framecount = cv2video.get(cv2.CAP_PROP_FRAME_COUNT)
print("フレーム数: {}".format(framecount))

frames_per_sec = cv2video.get(cv2.CAP_PROP_FPS)
print("秒間フレーム数: {}".format(frames_per_sec))

print("動画の長さ(sec):", framecount / frames_per_sec)

〇実行コマンド
pipenv run python show_videoinfo.py

2022年7月26日火曜日

Ubuntu 22.04にEclipse MosquittoとPython用Eclipse pahoをインストールする

Eclipse mosquittoはMQTT ブローカー(=MQTTのサーバ)、Eclipse pathoはMQTTプロトコルのライブラリです。 Publish/Subscribeモデルでメッセージを送受信できます。

開発手順 1. mosquittoをインストール
以下のコマンドでmosquittoをインストールします。
sudo apt-get -y install mosquitto mosquitto-clients

2. pipenvの導入
pipenvをインストールしていない場合は、以下のコマンドを実行します。
sudo apt-get update

sudo apt-get -y install python3-pip python3-distutils python3-dev

python3 -m pip install --user pipenv

echo "export PIPENV_VENV_IN_PROJECT=true" >> ~/.profile

echo 'export PATH=$PATH:/home/ubuntu/.local/bin' >> ~/.profile

source ~/.profile

3. paho-mqttモジュールがインストールされた仮想環境作成
pipenvを使用する場合は以下のコマンドで、paho-mqtt用の仮想環境を作成します。
mkdir -p ~/paho_mqtt

cd ~/paho_mqtt

pipenv --python 3

pipenv install paho-mqtt

pipenv shell

4. Subscribeサンプルプログラム
以下のプログラムで、mosquitto/testというトピックを受信してメッセージを表示します。

mosquitto_sub_test.py
import paho.mqtt.client as mqtt

topic = "mosquitto/test"
host = "localhost"
port = 1883
secs_keep_alive=60

def on_connect(client, userdata, flags, rc):
    print("Connected with result code "+str(rc))
    client.subscribe(topic)

def on_message(client, userdata, msg):
    print("received: {}:{}".format(msg.topic, str(msg.payload)))

client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message

client.connect(host, port, secs_keep_alive)

client.loop_forever()

・実行方法
以下のコマンドで受信プログラムを実行します。止める場合はCtrl+Cで止めてください。
python mosquitto_sub_test.py

5. Publishサンプルプログラム
以下のプログラムで、mosquitto/testというトピックにメッセージを送信します。

mosquitto_pub_test.py
import paho.mqtt.publish as publish

topic = "mosquitto/test"
host = "localhost"
port = 1883
secs_keep_alive=60

publish.single(topic, "message test", hostname=host, port=port, keepalive=secs_keep_alive)

・実行方法
以下のコマンドで送信プログラムを実行します。
python mosquitto_pub_test.py

Mosquittoのコマンドによる送受信 mosquittoのコマンドで、メッセージを送受信する事も出来ます。

・送信用コマンド
mosquitto_pub -t mosquitto/test -h localhost -m "test message by command."

・受信用コマンド
mosquitto_sub -t mosquitto/test -h localhost

2022年7月25日月曜日

Ubuntu 22.04にPySimpleGUIをインストールして、簡単なウインドウを表示する

PySimpleGUIでGUIを簡単に作成する事が出来ます。

インストール方法 1.pipenvのインストール
sudo apt-get update

sudo apt-get -y install python3-pip python3-distutils python3-dev

python3 -m pip install --user pipenv

echo "export PIPENV_VENV_IN_PROJECT=true" >> ~/.profile

echo 'export PATH=$PATH:/home/ubuntu/.local/bin' >> ~/.profile

source ~/.profile

2. PySimpleGUI用の仮想環境作成
pipenvを使用する場合は以下のコマンドで、PySimpleGUI用の仮想環境を作成します。
sudo apt-get -y install python3-tk tk-dev

mkdir -p ~/pysimplegui

cd ~/pysimplegui

pipenv --python 3

pipenv install PySimpleGUI

pipenv shell
サンプル実行手順 以下のファイルを保存して、実行します。
simple_window.py
import PySimpleGUI as sg

sg.theme('SystemDefault')
layout = [[sg.Text('サンプルです')]]

window = sg.Window('サンプル', layout)
# イベントループ
while True:
    event, values = window.read()
    if event == sg.WIN_CLOSED:
        break

window.close()

実行コマンド
python simple_window.py

〇実行結果
以下の小さなウインドウが表示されます。

2022年7月1日金曜日

AlmaLinux 9にPyCharm2022.1.2をインストールする

PyCharmはPython言語のIDEです。

〇PyCharmの画面

インストール方法 以下のコマンドを実行します。
wget https://download.jetbrains.com/python/pycharm-community-2022.1.2.tar.gz

tar xvfz pycharm-community-2022.1.2.tar.gz

sudo mv pycharm-community-2022.1.2 /opt/pycharm-community

cat << EOF | sudo tee /usr/share/applications/pycharm.desktop
[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Exec=/opt/pycharm-community/bin/pycharm.sh
Name=PyCharm
Icon=/opt/pycharm-community/bin/pycharm.png
Categories=Development;
EOF

関連情報 ・PyCharmに関する他の記事は、こちらを参照してください。

2022年5月22日日曜日

Ubuntu 22.04にThonnyをインストールする

Thonnyは初心者向けPython開発環境です。Raspberry Pi Pico等をつないでMicroPythonのプログラミングを行うことも出来ます。

〇Thonnyの画面(Ubuntu 22.04)

Ubuntu Softwareによるインストール方法 1. Ubuntu Softwareを起動して、thonnyを検索します。

2.Thonnyのインストールボタンをクリックします

コマンドによるインストール方法 以下のコマンドを実行します。
sudo apt-get update

sudo apt-get -y install thonny
関連情報 ・Thonnyのプロジェクトサイト
https://thonny.org/

・Raspberry pi picoに関する記事はこちらを参照してください。

2022年5月11日水曜日

PySimpleGUIとOpenCVでwebカメラ画像をピクセル化する

PySimpleGUIとOpenCVでwebカメラ画像をピクセル化するには、interpolation=cv2.INTER_LINEARを指定してresize関数を使用して縮小した後、interpolation=cv2.INTER_NEARESTを指定してresize関数を使用して元の大きさに戻します。

サンプルコードの実行手順 1. PySimpleGUIとOpenCVがインストールされた環境の構築
以下のページを参照して、環境を構築します。
PySimpleGUIとOpenCVをインストールしてwebカメラの映像をウインドウを表示する

2. サンプルプログラムの作成と実行
以下のファイルを保存して、実行します。
psgui_opencv_pixelate.py
import PySimpleGUI as sg
import cv2
import numpy as np

sg.theme('SystemDefault')
layout = [
  [sg.Image(key='img1'), sg.Image(key='img2')]
]

# webカメラをキャプチャー
capture = cv2.VideoCapture(0)

# webカメラの解像度を取得
width = int(capture.get(cv2.CAP_PROP_FRAME_WIDTH)/2)
height = int(capture.get(cv2.CAP_PROP_FRAME_HEIGHT)/2)
window = sg.Window("webカメラ画面", layout=layout, finalize=True)
# イベントループ
while True:
  event, values = window.read(timeout=50)
  if event == sg.WIN_CLOSED:
    break
  rv, frame = capture.read()
  if rv is True:
    # 左右に並べるために縦横のサイズを半分にリサイズ
    resized = cv2.resize(frame, (width, height))

    # ピクセルのサイズ
    pixel_size=16
    tpi = cv2.resize(resized, (int(width/pixel_size), int(height/pixel_size)), interpolation=cv2.INTER_LINEAR)
    pi = cv2.resize(tpi, (width, height), interpolation=cv2.INTER_NEAREST)

    # pngに変換して、Image更新
    img = cv2.imencode('.png', resized)[1].tobytes()
    img2 = cv2.imencode('.png', pi)[1].tobytes()
    window['img1'].update(data=img)
    window['img2'].update(data=img2)


capture.release()
window.close()

・実行方法
以下のコマンドを実行します。
python3 psgui_opencv_pixelate.py

関連情報 ・PySimpleGUIで画像を表示する

・OpenCVに関する他の記事はこちらを参照してください。

2022年5月10日火曜日

Ubuntu 22.04にpipenvとmoviepyをインストールする

moviepyで動画をpythonから編集する事ができます。

インストール方法 1.pipenvのインストール
sudo apt-get update

sudo apt-get -y install python3-pip python3-distutils python3-dev 

python3 -m pip install --user pipenv

echo "export PIPENV_VENV_IN_PROJECT=true" >> ~/.bashrc

echo 'PATH=$PATH:/home/ubuntu/.local/bin' >> ~/.bashrc

source ~/.bashrc

2. moviepy用の仮想環境作成
mkdir -p ~/moviepy

cd ~/moviepy

sudo apt-get -y install libpng-dev libfreetype-dev

pipenv --python 3

pipenv install matplotlib

pipenv install moviepy

pipenv shell

3. 動作確認用コード実行
以下のコードを実行すると、指定した動画の最初の10秒を切り出します。
first10sec.py
from moviepy.editor import *

clip = VideoFileClip("hydrangea.mp4").subclip(0,10)
clip.write_videofile("hydrangea_opening.mp4")

実行コマンド
python3 first10sec.py

補足情報 ・Ubuntu上でmp4を再生したい場合は以下をインストールして、EULAに同意します
sudo apt-get install -y ubuntu-restricted-extras ffmpeg

関連情報 ・MoviePyのまとめ

・moviepyのホームページ
https://zulko.github.io/moviepy/

PySimpleGUIとOpenCVでwebカメラ画像をUnifrom Quantizationで減色する

PySimpleGUIとOpenCVでwebカメラ画像をUnifrom Quantizationで減色するには、np.round(ピクセル値*(N/255))*(255/N)の式を使用します。

サンプルコードの実行手順 1. PySimpleGUIとOpenCVがインストールされた環境の構築
以下のページを参照して、環境を構築します。
PySimpleGUIとOpenCVをインストールしてwebカメラの映像をウインドウを表示する

2. サンプルプログラムの作成と実行
以下のファイルを保存して、実行します。
psgui_opencv_uniformquantization.py
import PySimpleGUI as sg
import cv2
import numpy as np

sg.theme('SystemDefault')
layout = [
  [sg.Image(key='img1'), sg.Image(key='img2')]
]

# webカメラをキャプチャー
capture = cv2.VideoCapture(0)

# webカメラの解像度を取得
width = int(capture.get(cv2.CAP_PROP_FRAME_WIDTH)/2)
height = int(capture.get(cv2.CAP_PROP_FRAME_HEIGHT)/2)
window = sg.Window("webカメラ画面", layout=layout, finalize=True)
# イベントループ
while True:
  event, values = window.read(timeout=50)
  if event == sg.WIN_CLOSED:
    break
  rv, frame = capture.read()
  if rv is True:
    # 左右に並べるために縦横のサイズを半分にリサイズ
    resized = cv2.resize(frame, (width, height))

    # Uniform Quantizationで減色
    N = 2 # -> 8colors
    N = 4 # -> 64colors
    #N = 8 # -> 512colors
    qi = np.round(resized*(N/255))*(255/N)

    # pngに変換して、Image更新
    img = cv2.imencode('.png', resized)[1].tobytes()
    img2 = cv2.imencode('.png', qi)[1].tobytes()
    window['img1'].update(data=img)
    window['img2'].update(data=img2)


capture.release()
window.close()

・実行方法
以下のコマンドを実行します。
python3 psgui_opencv_uniformquantization.py

関連情報 ・PySimpleGUIで画像を表示する

・OpenCVに関する他の記事はこちらを参照してください。