ビデオの一部についてメジアン計算を実行しようとしています。私は、TIの一部を考え出したが、これはpython opencvメディアンムービー
import cv2
camera = cv2.VideoCapture(videofile.h264)
for i in range(0,500):
(grabbed,frame) = camera.read(i)
if not grabbed:
break
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
medstack.append(gray)
medst = np.median(medstack,axis=0)
コードは最初の500個のフレームを開き、Pythonのリストにそれらを格納する最も効率的な方法であるかどうかを知りません。次に、軸0(推定されるスタック全体)の中央値の計算が行われます。問題は、このファイルは、私は問題を解決するためにUINT8へのfloat64の変換について考えたが、私はまた、BGRへのfloat64に変換しようとした後の計算
while (camera.isOpened()):
(grabbed,frame) = camera.read()
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
subframe = gray-medst
rgbframe = cv2.cvtColor(subframe,cv2.COLOR_GRAY2BGR)
out.write(rgbframe)
で台無しのfloat64に変換された状態で終わるということです配列は、コードが実行しようとしているが、失敗しています。
opencvの画像を添付する前に[median blur](http://docs.opencv.org/3.1.0/d4/d86/group__imgproc__filter.html#ga564869aa33e58769b4469101aac458f9)を直接行ってみませんか? (それはBGR画像をサポートしますが、チャンネルは別々に扱われます) – api55
2番目のステップでバックグラウンド減算を行うので、画像の解像度を維持する必要があります。このコードは、多くの異なるビデオファイルで使用され、それぞれには小さな違いがあります。最終目標はトラッキングであるため、各動画のメジアンフレームを計算して減算を実行することをおすすめしました。 –
オハイオ州、私はあなたを今すぐ持っているので、すべての画像にわたって各ピクセルの中央値を取得したいと思います。同じ画像内の近傍ではありません。浮動小数点64はnumpyで期待されます([docs](https://docs.scipy.org/doc/numpy/reference/generated/numpy.median.html)を参照してください。 – api55