質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
86.02%
Visual Studio Code

Visual Studio Codeとは、Microsoft社が開発したマルチプラットフォーム対応のテキストエディタです。Visual Studioファミリーの一員でもあります。拡張性とカスタマイズ性が高く、テキストエディタでありながら、IDEと遜色ない機能を備えることができます。

Flask

FlaskはPython用のマイクロフレームワークであり、Werkzeug・Jinja 2・good intentionsをベースにしています。

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

pythonを活用し、ラズパイをずっと動かしたまま他の操作をしたい

nemotonkatu
nemotonkatu

総合スコア18

Visual Studio Code

Visual Studio Codeとは、Microsoft社が開発したマルチプラットフォーム対応のテキストエディタです。Visual Studioファミリーの一員でもあります。拡張性とカスタマイズ性が高く、テキストエディタでありながら、IDEと遜色ない機能を備えることができます。

Flask

FlaskはPython用のマイクロフレームワークであり、Werkzeug・Jinja 2・good intentionsをベースにしています。

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

1回答

0グッド

0クリップ

261閲覧

投稿2022/11/11 01:21

前提

vscodeでflaskを使ったpythonとラズベリーパイを活用した自転車管理システム(ラズパイは監視カメラのようなもの)を作成しています。

実現したいこと

カメラを起動したまま、別ページに飛びたい。
ログイン機能なども実装したのですが、カメラを起動したまま他ページに飛ぶとカメラが消えてしまいます。カメラを起動したまま他ページでも操作したいです。
監視カメラのイメージなので、カメラはずっと動いたまま管理する時間の設定やアカウントログインなどの操作をしたいです

該当のソースコード

python

1from http.server import HTTPServer, BaseHTTPRequestHandler 2import cv2 3from flask import Flask,render_template,request,g 4app = Flask(__name__,static_folder='./templates/images') 5@app.route('/') 6def index(): 7 return render_template('menu.html') 8@app.route('/move',methods=["POST"]) 9def move_post(): 10# カメラのデバイスをオープン 11 camera = cv2.VideoCapture(0) 12# Webサーバーのハンドラを定義 --- (*1) 13 class liveHTTPServer_Handler(BaseHTTPRequestHandler): 14 # アクセスがあったとき 15 def do_GET(self): 16 print("path=",self.path) 17 # 画像を送信する --- (*2) 18 if self.path[0:7] == "/camera": 19 # ヘッダ 20 self.send_response(200) 21 self.send_header('Cotent-Type', 'image/jpeg') 22 self.end_headers() 23 # フレームを送信 24 _, frame = camera.read() 25 img = cv2.resize(frame, (900,800)) 26 # JPEGにエンコード 27 param = [int(cv2.IMWRITE_JPEG_QUALITY), 80] 28 _, encimg = cv2.imencode('.jpg', img, param) 29 self.wfile.write(encimg) 30 # HTMLを送信する --- (*3) 31 elif self.path == "/": 32 # ヘッダ 33 self.send_response(200) 34 self.send_header('Content-Type', 'text/html') 35 self.end_headers() 36 # HTMLを出力 37 try: 38 f = open('live2.html', 'r', encoding='utf-8') 39 s = f.read() 40 except: 41 s = "file not found" 42 self.wfile.write(s.encode('utf-8')) 43 else: 44 self.send_response(404) 45 self.wfile.write("file not found".encode('utf-8')) 46 try: 47 # Webサーバーを開始 --- (*4) 48 addr = ('', 8081) 49 httpd = HTTPServer(addr, liveHTTPServer_Handler) 50 print('サーバーを開始', addr) 51 httpd.serve_forever() 52 except KeyboardInterrupt: 53 httpd.socket.close() 54if __name__ == '__main__': 55 app.debug = True 56 app.run(host='localhost',debug=True)

python

1<!DOCTYPE html> 2<html lang="jp"> 3<head> 4 <meta charset="UTF-8"> 5 <title>ログインページ</title> 6</head> 7<body> 8 <form > 9 <h1>ログイン成功</h1> 10 </form> 11 <form action='/move'> 12 <button type="submit" formmethod="POST">動画確認</button> 13 </form> 14 <form action='http://192.168.137.98'> 15 <button type="submit">動画</button> 16 </form> 17 <a href="#" onclick="location.href = 'http://192.168.137.98:8081'">Oracle Enterprise Manager</a> 18</body> 19</html>

試したこと

カメラを二個設置し、別々の操作ができるか
pythonファイルを二個動かして片方はカメラを実行したまま操作

以下のような質問にはグッドを送りましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

グッドが多くついた質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

回答1

0

ベストアンサー

提示されているコードだけ見ると、Flask要らないような気がします。

カメラを起動したまま、の意味がわかりませんが、Webとは別にカメラを管理するようなプログラムを作り、そちらでアクセスさせて、Webからはそれを利用するような形で実装してはいかがでしょうか?

投稿2022/11/11 03:00

FiroProchainezo

総合スコア2105

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

回答へのコメント

nemotonkatu

2022/11/11 03:12

pythonで作成しており、他のコード(ログイン、DB接続等)は文字制限で入らなかったのでカメラのコードだけ提示させて頂きました。 現状、pythonは1つのファイルで作成しているのですが、pythonから他のpythonコードを実行することは可能なのでしょうか。
nemotonkatu

2022/11/11 03:16

現状vscodeを使っているのですが、同時に二個のpythonファイルを実行することができるのでしょうか
FiroProchainezo

2022/11/11 03:36

> 現状、pythonは1つのファイルで作成しているのですが、pythonから他のpythonコードを実行することは可能なのでしょうか。 可能です。 > 現状vscodeを使っているのですが、同時に二個のpythonファイルを実行することができるのでしょうか 可能です。 カメラのコードはRaspberryPi上で動作していると思いますが、systemctl等を使って自動起動するように作成したりすれば良いと思います。 今回はカメラを制御するアプリとWebアプリを別にしてはいかがですか、という話なので、カメラのデータをやりとりするのにredisやソケット通信、共有メモリなどを使うと良いと思います。 ただし、 > カメラを起動したまま他ページに飛ぶとカメラが消えてしまいます。 というのが、ブラウザ上で表示したままにしたい、という意図だった場合は、別の実装になると思います。 (その場合は、移動しないで画面構成を変えるSPAのような構成をする必要があるはずです)
nemotonkatu

2022/11/14 00:30

ありがとうございます、ご教授頂いたことを参考に作成してみます。
nemotonkatu

2022/11/15 02:15

すみません、同時に二個のpythonファイルを実行することができないのですが、ご教授いただけないでしょうか。呼び出して二個実行などはできますが、互いに独立して動かすことができませんでした。
FiroProchainezo

2022/11/15 02:28

同時に2つのpythonを実行しようとする場合、Windowsなら例えば`python {pythonファイル名}`のような形のコマンドを、別々に2個実行することになります。 コマンドプロンプト1つではできないので、2個起動して実行してください。 若しくは、上に書いた通り、systemctlを使う場合はバックグラウンド実行になりますので、`sudo systemctl start {service name}`でそれぞれ実行すれば良いと思います。(serviceファイルの作成が必要ですが。)

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
86.02%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Visual Studio Code

Visual Studio Codeとは、Microsoft社が開発したマルチプラットフォーム対応のテキストエディタです。Visual Studioファミリーの一員でもあります。拡張性とカスタマイズ性が高く、テキストエディタでありながら、IDEと遜色ない機能を備えることができます。

Flask

FlaskはPython用のマイクロフレームワークであり、Werkzeug・Jinja 2・good intentionsをベースにしています。

Raspberry Pi

Raspberry Piは、ラズベリーパイ財団が開発した、名刺サイズのLinuxコンピュータです。 学校で基本的なコンピュータ科学の教育を促進することを意図しています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。