- 投稿日:2020-11-19T21:51:46+09:00
UbuntuでMSXのプログラムをカセットテープから抽出してみた
中古ゲーム屋でMSX用ソフト「ミステリーハウス」のゲームプログラムが収められたカセットテープを保護したので、中のデータのサルベージに挑戦してみました。
*「カセットテープにプログラムが入っているってどういうこと?」という方はこちらをどうぞhttps://ja.wikipedia.org/wiki/%E3%83%87%E3%83%BC%E3%82%BF%E3%83%AC%E3%82%B3%E3%83%BC%E3%83%80
用意するもの
*カセットテープ(ミステリーハウス)
*ラジカセ
*オーディオケーブル
*Audacity(https://www.audacityteam.org/)
*MSXcastools(http://home.kabelfoon.nl/~vincentd/)
*PCラジカセのイヤフォンとPCのマイクジャックをオーディオケーブルで接続
Audacityを起動
サンプリング周波数を44100に設定
録音する
Audacityで録音を開始
ラジカセで再生開始
波形を見てみる
CTRL+ホイールで表示を拡大すると音声の波形が見えてきます。
いわゆる矩形波というやつですね。
一方別のテープには正弦波っぽい波形が収められていました。
ボリュームについて考える
矩形波の場合は波形が上下に多少振り切っても問題なさそうですが正弦波は山谷の頂点部分が振り切らない程度にボリュームを調整した方がよさそうです。
ボリュームを調整しながら何度か録音してみましょう。
いい感じに録音できたら、このへんのメニューから16bitPCMを選択しておきます。
ファイルに保存
MSXCastools
Wineのインストール
MSXCastoolsは本来Windows用ソフトなため、起動するためにWineをインストールしておきます。
sudo apt-get install wineMSXCastoolsの起動
コマンドラインを起動し、MSXCastoolsのフォルダに移動したら以下のコマンドで起動します。
wine MSXcastoolsUI.exe
WAVファイルを開く
"Drag file here"と書かれた部分へ先程保存したWavファイルをドラッグします。
チューニング
ウィンドウ上部のチェックボックスは両方ともとりあえずONで
"Push Here to canvert to cas"と書かれたボタンを押すとcas形式ファイルが保存されます。
3つのつまみを調整しながらファイルサイズが最大になるまで何度か保存してみましょう。ファイルを覗いてみる
コンソールを起動して、casファイルが保存されたディレクトリへ移動します。
hexdumpコマンドでファイル内部を表示してみましょう。
(インストールされていない場合は sudo apt-get install hexdump)hexdump -C ./MisteryHouse.cas
ゲーム内で使用するコマンドらしきものが見えてきました。
どうやらデータが上手く取り出せたっぽいですね。
エミュで起動してみる。
MSXエミュレータは様々ありますが、とりあえずWEB版の https://webmsx.org/ がお手軽です。
ファイルのロード
下部のアイコンからLoad tape imageを選択し、作成したcasファイルを選択します。
cload
カセットからデータを読み込むコマンド「cload」を入力し、エンターキーを押すと・・上手く読み込めた様です。
run!
ロードしたプログラムを実行するには「run」と入力してエンターまたはF5キーを押します。
エイ!
起動しましたね!成功です!
その後
しかしタイトル画面後の追加ロードは成功しませんでした。
散々試行錯誤したあげく元の音声データを見返してみると・・・うーむどうやらテープが劣化して信号が不完全な部分が発生してしまった様です。
しかしまあ30年以上前のメディアから一部のデータを取り出せただけでもラッキーと言えるでしょう。
お手元にまだ当時のカセットテープが残っていたら、再生手段が消え去る前に一度チャレンジしてみてください。
- 投稿日:2020-11-19T21:51:46+09:00
UbuntuでMSXのプログラムをカセットテープからバックアップしてみた
中古ゲーム屋でMSX用ソフト「ミステリーハウス」のゲームプログラムが収められたカセットテープを保護したので、中のデータのサルベージに挑戦してみました。
カセットテープの外観です。ゲーム業界黎明期の空気が閉じ込められた素晴らしい一品です。
*「カセットテープにプログラムが入っているってどういうこと?」という方はこちらをどうぞhttps://ja.wikipedia.org/wiki/%E3%83%87%E3%83%BC%E3%82%BF%E3%83%AC%E3%82%B3%E3%83%BC%E3%83%80
ご注意
*この記事で扱っている内容は自己所持しているメディアのバックアップの記録です。自己で所持していないソフトウェアの複製は違法行為となりますのでご注意下さい。
*ゲームのスクリーンショットは引用の範囲で利用しています。
*著作権の保護期間をもうちょっと短くしないとデジタル考古学的資産がまともに保護されないまま消えてしまうことが危惧されます。用意するもの
*カセットテープ(ミステリーハウス)
*ラジカセ
*オーディオケーブル
*Audacity(https://www.audacityteam.org/)
*MSXcastools(http://home.kabelfoon.nl/~vincentd/)
*PCラジカセのイヤフォンとPCのマイクジャックをオーディオケーブルで接続
Audacityを起動
サンプリング周波数を44100に設定
録音する
Audacityで録音を開始
ラジカセで再生開始
波形を見てみる
CTRL+ホイールで表示を拡大すると音声の波形が見えてきます。
いわゆる矩形波というやつですね。
一方別のテープには正弦波っぽい波形が収められていました。
ボリュームについて考える
矩形波の場合は波形が上下に多少振り切っても問題なさそうですが正弦波は山谷の頂点部分が振り切らない程度にボリュームを調整した方がよさそうです。
ボリュームを調整しながら何度か録音してみましょう。
いい感じに録音できたら、このへんのメニューから16bitPCMを選択しておきます。
ファイルに保存
MSXCastools
Wineのインストール
MSXCastoolsは本来Windows用ソフトであり、一般的な方法では起動できません。そこでここでは、LinuxでWindows用ソフトウェアを起動できる互換レイヤ「Wine(https://ja.wikipedia.org/wiki/Wine )」をインストールしておきます。
sudo apt-get install wineMSXCastoolsの起動
コマンドラインを起動し、MSXCastoolsのフォルダに移動したら以下のコマンドで起動します。
wine MSXcastoolsUI.exe
WAVファイルを開く
"Drag file here"と書かれた部分へ先程保存したWavファイルをドラッグするとメイン画面が表示されます。
チューニング
ウィンドウ上部のチェックボックスは両方ともとりあえずONで
"Push Here to canvert to cas"と書かれたボタンを押すとcas形式ファイルが保存されます。
3つのつまみを調整しながらファイルサイズが最大になるまで何度か保存してみましょう。ファイルを覗いてみる
コンソールを起動して、casファイルが保存されたディレクトリへ移動します。
hexdumpコマンドでファイル内部を表示してみましょう。
(インストールされていない場合は sudo apt-get install hexdump)hexdump -C ./MisteryHouse.cas
ゲーム内で使用するコマンドらしきものが見えてきました。
どうやらデータが上手く取り出せたっぽいですね。
エミュで起動してみる。
MSXエミュレータは様々ありますが、とりあえずWEB版の https://webmsx.org/ がお手軽です。
ファイルのロード
下部のアイコンからLoad tape imageを選択し、作成したcasファイルを選択します。
cload
カセットからデータを読み込むコマンド「cload」を入力し、エンターキーを押すと・・上手く読み込めた様です。
run!
ロードしたプログラムを実行するには「run」と入力してエンターまたはF5キーを押します。
エイ!
起動しましたね!成功です!
その後
しかしタイトル画面後の追加ロードは成功しませんでした。
散々試行錯誤したあげく元の音声データを見返してみると・・・うーむどうやらテープが劣化して信号が不完全な部分が発生してしまった様です。
しかしまあ30年以上前のメディアから一部のデータを取り出せただけでもラッキーと言えるでしょう。
お手元にまだ当時のカセットテープが残っていたら、再生手段が消え去る前に一度チャレンジしてみてください。
- 投稿日:2020-11-19T20:10:26+09:00
UbuntuのブータブルUSBメモリを作成する
新しいPCを買ったのでUbuntuをインストールする。
インストールを行うためのブータブルUSBメモリを作成する。
USBメモリのセットアップはUbuntu上で行う。基本的に以下の公式サイトの記載通りに作業する。
Create a bootable USB stick on Ubuntu
https://ubuntu.com/tutorials/create-a-usb-stick-on-ubuntuWindows版、MacOS版もある。
Create a bootable USB stick on Windows
https://ubuntu.com/tutorials/create-a-usb-stick-on-windowsCreate a bootable USB stick on macOS
https://ubuntu.com/tutorials/create-a-usb-stick-on-macos1.必要なもの
https://ubuntu.com/tutorials/create-a-usb-stick-on-ubuntu#2-requirements
・4GB以上の空のUSBメモリ(USBメモリ上のデータは全て削除されるので注意)
・Ubuntu Desktop 14.04以上
・ダウンロードしたUbuntu ISOファイル2.Startup Disk Creator起動
https://ubuntu.com/tutorials/create-a-usb-stick-on-ubuntu#3-launch-startup-disk-creator
USBメモリを挿す
Startup Disk Createrを起動
$ usb-creator-gtk3.ブータブルUSBの作成
https://ubuntu.com/tutorials/create-a-usb-stick-on-ubuntu#4-iso-and-usb-selection
アプリを起動すると
・ダウンロードフォルダに置かれているISOイメージ一覧
・PCに接続されているUSBメモリ一覧
が見える。
それぞれの一覧から使用するものを選択して”ブータブルUSBの作成”ボタンを押す。
これでブータブルUSB完成。非常に簡単。
- 投稿日:2020-11-19T20:08:26+09:00
Wireshark Development Release(3.3.1) をUbuntuでbuildしてInstall
WiresharkをDownload
https://www.wireshark.org/#download"Source Code"を選択
https://1.as.dl.wireshark.org/src/wireshark-3.3.1.tar.xz$ tar xvJf wireshark-3.3.1.tar.xz
$ less wireshark-3.3.1/INSTALL
INSTALLドキュメント確認QtとGLibのdevelopment packagesが必要。
$ pkg-config glib-2.0 --modversion
$ pkg-config Qt5Widgets --modversInstall Qt 5 on Ubuntu
https://wiki.qt.io/Install_Qt_5_on_Ubuntu
sudo apt install qt5-defaultglibインストール。
$ sudo apt install libglib2.0-dev$ pkg-config glib-2.0 --modversion
2.64.3
$ pkg-config Qt5Widgets --modvers
5.12.8$ sudo apt install libpcap-dev
私の環境ではPerlはインストールされていた。
$ perl --versionThis is perl 5, version 30, subversion 0 (v5.30.0) built for x86_64-linux-gnu-thread-multi
(with 46 registered patches, see perl -V for more detail)Copyright 1987-2019, Larry Wall
Perl may be copied only under the terms of either the Artistic License or the
GNU General Public License, which may be found in the Perl 5 source kit.Complete documentation for Perl, including FAQ lists, should be found on
this system using "man perl" or "perldoc perl". If you have access to the
Internet, point your browser at http://www.perl.org/, the Perl Home Page.Pythonもインストールされていた。
$ python3 --version
Python 3.8.5cmakeをインストール
$ sudo apt install cmake
$ cmake --version
cmake version 3.16.3CMake suite maintained and supported by Kitware (kitware.com/cmake).
$ cmake ./wireshark-3.3.1
cmakeでエラーになった足りないライブラリをインストール
sudo apt install libgcrypt20-dev
sudo apt install libc-ares-dev
sudo apt install libssh-dev
sudo apt install gettext
sudo apt install qttools5-dev
sudo apt install qtmultimedia5-dev
ここまでやってやっとcmake成功。$ make
ビルド成功
-> run/wiresharkができている
- 投稿日:2020-11-19T20:03:01+09:00
BlueZビルド&インストール
wget http://www.kernel.org/pub/linux/bluetooth/bluez-5.54.tar.xz
tar xvJf bluez-5.54.tar.xz
cd bluez-5.54sudo apt install libglib2.0-dev libdbus-glib-1-dev libudev-dev libical-dev libreadline-dev
./configure --prefix=/usr --mandir=/usr/share/man --sysconfdir=/etc --localstatedir=/var
make
sudo make install
- 投稿日:2020-11-19T17:14:04+09:00
manで基本的なコマンドの日本語表示がされない原因は?
環境
Vagrant + Ubuntu 16.04.5 LTS
対応
manのトップページを表示すると、ちゃんと日本語マニュアルが表示されるのだが。
$man manこのような基本的なコマンドが何故か英語表示される。
$man ls $man catロケールには、ja_JP.utf8の設定はちゃんとされています。
$locale -amanの日本語パッケージは入っています。
$apt list --installed | grep manpages-ja manpages-ja/xenial,xenial,now 0.5.0.0.20140515+dfsg-2 all [インストール済み] manpages-ja-dev/xenial,xenial,now 0.5.0.0.20140515+dfsg-2 all [インストール済み]manの各コマンド単位のパッケージが存在するか見てみると、catとlsが存在していない。何故?
$ls -l /usr/share/man/ja/man1/{cat,ls,man}.1.gz ls: '/usr/share/man/ja/man1/cat.1.gz' にアクセスできません: そのようなファイルやディレクトリはありません ls: '/usr/share/man/ja/man1/ls.1.gz' にアクセスできません: そのようなファイルやディレクトリはありません -rw-r--r-- 1 root root 15K 11月 7 2015 /usr/share/man/ja/man1/man.1.gz取り敢えず、最新版をインストールする事に。
$sudo apt install -y manpages-ja manpages-ja-devインストールされたようです。
$ls -l /usr/share/man/ja/man1/{cat,ls,man}.1.gz -rw-r--r-- 1 root root 1.4K 12月 16 2015 /usr/share/man/ja/man1/cat.1.gz -rw-r--r-- 1 root root 4.0K 12月 16 2015 /usr/share/man/ja/man1/ls.1.gz -rw-r--r-- 1 root root 15K 11月 7 2015 /usr/share/man/ja/man1/man.1.gz漸く、日本語表示がされるようになりました。
$man ls $man cat
- 投稿日:2020-11-19T13:56:02+09:00
Linux EC2インスタンスをAWS Managed Microsoft ADへシームレスに参加させる
Linux EC2インスタンスをAWS Managed Microsoft ADに参加させてIDの統合管理をしている環境があるのですが、今までインスタンスが増える度に手動でAD参加コマンド実行、パスワード入力という手順を実施してインスタンスのデプロイに非常に時間がかかっていました。加えてEC2 AutoScalingの検討しておりこのパスワード入力の壁越えなきゃなーと調べていたら、今年に入りシームレスなAD参加がサポートされていました!
Amazon EC2 for Linux インスタンスを AWS Directory Service にシームレスに参加させる
ということでLinuxインスタンスデプロイ時にAD参加させる方法を検証してみました。
ちなみに、冒頭で触れた今までのAD参加方法はこちら↓↓
Linux インスタンスを手動で結合する今回検証した手順はこちら↓↓
Linux EC2インスタンスをシームレスに参加 AWS Managed Microsoft AD ディレクトリ前提条件
まず2020/11/17時点でサポートされているディストリビューション、バージョンは以下となります。
- Amazon Linux AMI 2018.03.0
- Amazon Linux 2 (64 ビット x86)
- Red Hat Enterprise Linux 8 (HVM) (64 ビット x86)
- Ubuntu Server 18.04 LTS & Ubuntu Server 16.04 LTS
- CentOS 7 x86-64
- SUSE Linux Enterprise Server 15 SP1
Noteに
"Distributions prior to Ubuntu 14 and Red Hat Enterprise Linux 7 do not support the seamless domain join feature."
とありましたので、RHEL7はOKと判断しRHEL7で検証しました。また、対象インスタンスにはAWS Systems Manager (SSM Agent) バージョン 2.3.1644.0 以上が必要となっています。
ということで、
検証環境
- Region: Tokyo
- DirectoryService: AWS Managed Microsoft AD Standard ※作成済み
- AD参加するインスタンス: RedHat Enterprise Linux 7.9
- ADに接続して操作するインスタンス: WindowsServer 2019 ※作成済み
では、検証
AWS Managed Microsoft ADへRHEL7.9インスタンスを起動時に参加させます。
まずはドメインユーザーの作成から。AD参加用ドメインユーザーの作成
LinuxインスタンスをAD参加させるため、コンピュータアカウントの作成権限をもつドメインユーザーをサービスアカウントとして設定します。
今回の構成で言うと、AD参加済みのWindowsServer 2019にて、"Active Directory ドメインサービス"を開いて(別のユーザーとして実行からMicrosoft ADのAdminユーザーで接続)ユーザを新規作成しておきました。次に作成したドメインユーザーに対し権限を付与します。AD参加させるためだけに使用するものとなりますので、できる限り最小限の権限をもたせる形にしたい、ということで下記の通りPowerShellコマンドが用意されていました。1行目の
$AccountName
には先程作成したドメインユーザー名を入力します。$AccountName = 'awsSeamlessDomain' # DO NOT modify anything below this comment. # Getting Active Directory information. Import-Module 'ActiveDirectory' $Domain = Get-ADDomain -ErrorAction Stop $BaseDn = $Domain.DistinguishedName $ComputersContainer = $Domain.ComputersContainer $SchemaNamingContext = Get-ADRootDSE | Select-Object -ExpandProperty 'schemaNamingContext' [System.GUID]$ServicePrincipalNameGuid = (Get-ADObject -SearchBase $SchemaNamingContext -Filter { lDAPDisplayName -eq 'Computer' } -Properties 'schemaIDGUID').schemaIDGUID # Getting Service account Information. $AccountProperties = Get-ADUser -Identity $AccountName $AccountSid = New-Object -TypeName 'System.Security.Principal.SecurityIdentifier' $AccountProperties.SID.Value # Getting ACL settings for the Computers container. $ObjectAcl = Get-ACL -Path "AD:\$ComputersContainer" # Setting ACL allowing the service account the ability to create child computer objects in the Computers container. $AddAccessRule = New-Object -TypeName 'System.DirectoryServices.ActiveDirectoryAccessRule' $AccountSid, 'CreateChild', 'Allow', $ServicePrincipalNameGUID, 'All' $ObjectAcl.AddAccessRule($AddAccessRule) Set-ACL -AclObject $ObjectAcl -Path "AD:\$ComputersContainer"上記コマンドをWindowsServer 2019で実行し、awsSeamlessDomainを必要最小限の権限を持ったサービスアカウントとして設定しました。
Secrets Managerにサービスアカウント情報を保存
インスタンス起動時のドメイン参加において、先程作成したサービスアカウントを利用するため、Secrets Managerに情報を保存しておきます。
Secrets Managerのサービスコンソールに遷移後、Store a new secretをクリックし、下図の通り設定しました。
Configure rotationではDisable automatic rotationを指定します。
設定を確認して保存すると、新しいシークレットが追加されます。Secret ARNはIAMポリシー設定時に使いますので、控えておきます。
IAMロールの作成
AD参加するインスタンスに付与するIAMロールを作成します。
対象IAMロールにはAWS管理ポリシー×2、カスタマー管理ポリシー×1をアタッチしますので、先にカスタマー管理ポリシーを作成しておきます。
手順は省略しますが、ポリシー名をSM-Secret-Linux-DJ-<ディレクトリid>-Readとし、以下のポリシードキュメントで作成しました。{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "secretsmanager:GetSecretValue", "secretsmanager:DescribeSecret" ], "Resource": [ "<作成したSecretのARN>" ] } ] }続いてIAMロールはSelect type of trusted entityでEC2を選択し、ポリシーの選択で下記3つの管理ポリシーにチェックを入れます。
- AmazonSSMManagedInstanceCore
- AmazonSSMDirectoryServiceAccess
- SM-Secret-Linux-DJ-<ディレクトリid>-Read ※先程作成したカスタマー管理ポリシー
ロール名はLinuxEC2DomainJoinとし、IAMロールを作成します。
Linux EC2インスタンスをADに参加させる
ここまででLinux EC2インスタンスを新規起動時にAD参加させるための準備が整いました!
インスタンスを起動し、AD参加できていることを実際に確認してみます。
- EC2コンソールからLaunch Instancesをクリックします。
- Step 1: Choose an Amazon Machine Image (AMI)では、起動するLinuxインスタンスAMIをします。今回はCommunity AMIsからRHEL7.9を選択しました。
- Step 2: Choose an Instance Typeで任意のインスタンスタイプを選択します。
- Step 3: Configure Instance Detailsはポイントとなるステップです。VPCなどは各環境に合わせて指定しますが、本ステップでは参加するAD、IAMロール、およびSSM AgentをインストールするためのUserDataを指定します。
- Domain join directory: 作成済みのAWS Managed Microsoft AD Standardドメイン
- IAM role: LinuxEC2DomainJoin
- User data: 以下のスクリプトを指定
#!/bin/bash -xe exec > >(tee /var/log/user-data.log|logger -t user-data -s 2>/dev/console) 2>&1 yum install -y https://s3.ap-northeast-1.amazonaws.com/amazon-ssm-ap-northeast-1/latest/linux_amd64/amazon-ssm-agent.rpm systemctl enable amazon-ssm-agent systemctl start amazon-ssm-agent systemctl status amazon-ssm-agent
- Step 4〜6については環境に合わせて設定します。
- Step 7: Review Instance Launchで設定内容を確認し、Launchをクリックします。
新規Linux EC2インスタンスの起動が開始されました。
ここで再度WindowsServerにログインし、ADのコンピュータアカウントを確認してみます。起動前は既にAD参加済みのWindowsのみ表示されていました。
Linux EC2インスタンスの起動完了後、画面を更新すると、コンピュータアカウントが追加されています。
ドメインユーザーでLinux EC2インスタンスにSSHログインできるか確認してみると、
無事ログインできました!まとめ
Linux EC2インスタンス起動時にシームレスにAD参加する方法を検証しました。
以前は手動でコマンド実行していた関係でドメイン参加が漏れていた、なんてこともありましたが
起動時に自動で参加してくれるのであれば作業漏れありませんね。
これでEC2 AutoScaling時にも活用できそうです。(2020/11/19追記)
AutoScalingグループで指定するLaunch Templatesでは、参加するドメインの指定ができなさそう。。なので結局はUserDataでゴリゴリやるしかないかなぁ。。
- 投稿日:2020-11-19T09:32:07+09:00
CycloneVSoCにOpenCVを組み込んでUSBカメラの映像をLinux Desktopに表示する
CycloneVSoCにOpenCVを組み込んでUSBカメラの映像をLinux Desktopに表示する
はじめに
Cyclone V SoCをつかった基板でAIの開発をする際、カメラ映像の取り込みはベースとなるので、自分への忘却録としても手順を記載したいと思います。
開発環境(Linux)
- クロスコンパイル環境: VirtualBox グラフィカルユーザーインターフェースバージョン 6.1.14 r140239 (Qt5.6.2)
- ゲストOS:Ubuntu18.04lts
- FPGAコンパイル環境:Quartus Prime Version 18.1.1 build 646
Linux Desktopの構築
こちらのサイトの7.6.2項までを参考に、Cyclone V SoCにLinux Desktopのインストールをします。
https://rocketboards.org/foswiki/Projects/OpenVINOForSoCFPGA手順は上記サイトを参考に、下記の変更を加えています。
- ツールチェーン:gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf.tar.xz
- Linuxカーネル: socfpga-5.4.45-lts
- rootfs:linaro-stretch-developer-20170706-43.tar.gz
OpenCVのインストール
下記公式サイトを参考にインストールを進めていきます。
https://docs.opencv.org/4.4.0/d7/d9f/tutorial_linux_install.htmlツールのインストール
$ sudo apt-get install build-essential $ sudo sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev $ sudo apt-get install python-dev python-numpy libtbb2 libtbb5-dev libjpeg-dev libpng-dev libtiff-dev libdc1394-22-dev公式には、libtbb-devが指定してありましたが、パッケージが見つからなかったので代わりにlibtbb5-devを、libjasper-devは見つからなかったので省略します。
GitからOpenCVをチェックアウト
$ git clone https://github.com/opencv/opencv.git $ git clone https://github.com/opencv/opencv_contrib.gitOpenCVのビルド
$ cd ~/opencv $ mkdir build $ cd build $ cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local .. $ make -j2OpenCVのインストール
$ sudo make install正常にインストールされているか確認します。Pythonのインタラクティブコンソールを使えば確認できると思います。
$ Python3 >>> import cv2 >>>エラーが出ずにプロンプト>>>が返ってくれば正常にインストールされていると思います。
Pythonプログラム
previe.py#!/usr/bin/env python3 import cv2 cap = cv2.VideoCapture(0) while(True): ret, frame = cap.read() if not ret: break cv2.imshow(`preview`, frame) key = cv2.waitKey(1) if key == 27: # ESC break cap.release() cv2.destroyAllWindows()実行
下記でプログラムを実行すれば、カメラの映像がWindowに表示されます。
$ python3 previe.py