Darkside(https対応しました)

2021年08月13日の記事

2021年8月13日(金) 22:10

最悪の可能性

 python は2と3が入っている。念のため両方で pip と flisk が使えるようにする。
 更に Apache を入れ、flisk 用のテンプレートを設置。カメラテストのプログラムを動かすと、最新ジェットパックの時と同様のエラーが出た。

 ならばと、昨日実行させた VideoCapture(0) だけ確認するプログラムを動かす。やはり、派手にエラーが出る。絶望したのだが、リセットすると元に戻った。
 試行錯誤し、カメラのデーター形式をモーションjpegに変更することに成功。

#!/usr/bin/env python3
import cv2
cap = cv2.VideoCapture(0)
fourcc = cv2.VideoWriter_fourcc('m','j','p','g')
cap.set(cv2.CAP_PROP_FOURCC, int(fourcc))

width = cap.get(cv2.CAP_PROP_FRAME_WIDTH)
height = cap.get(cv2.CAP_PROP_FRAME_HEIGHT)
fps = cap.get(cv2.CAP_PROP_FPS)

print("WIDTH:", width)
print("HEIGHT:", height)
print("FPS:", fps)

 これで、フレームレートが30に向上したことが確認できる。

 ただし、動作するのは python だけ。python3 で実行すると、無限ループにでも入ったように反応が無くなり、強制終了することになる。
 この際とにかく動くことが重要で、バージョンの上がった環境など用意しなくていい。もう、そういう諦めの境地である。このまま、python2 で動かすことにする。
 今度は、結果表示している最後の3行に、read() を挿入。

print("WIDTH:", width)
print("HEIGHT:", height)
ret, img = cap.read()
print("FPS:", fps)

 すると、暫く待たされた挙げ句に read() でエラー発生。

 ここまで良い線来ているのに、どうしても read() できない。出ているエラーについても調べたが、有用な前例は皆無。ちなみに、cap.isOpened() はしっかり True が返って来ている。それなのに、read() できない。
 どれだけ調べても、read() できないという前例がどこにもない。みんなすんなり、read() ではエラーが出ていない。返り値がエラーという前例はあっても、read() 自体が動作しないという前例がない。どうにもならない。

 こうなると、相性により動かない、このカメラは使えない、という最悪の結果が見えてきた。

written by higashino [Sタンク 1/16] [この記事のURL] [コメントを書く] [コメント(0)] [TB(0)]

この記事へのトラックバックPingURL
Darkside(https対応しました)

Generated by MySketch GE 1.4.1

Remodelling origin is MySketch 2.7.4