我想平均每30幀的視頻創建一個模糊的timelapse。我有視頻閱讀和視頻編寫工作,但有些不對,因爲我只看到藍色通道! (或正在寫入藍色的一個通道)。OpenCV幀混合只導致藍色
任何想法?或者更好的方法來做到這一點?我是OpenCV的新手。代碼在Kotlin中,但我認爲如果這是Java或Python或其他任何東西,它應該是同樣的問題。
val videoCapture = VideoCapture(parsedArgs.inputFile)
val frameSize = Size(
videoCapture.get(Videoio.CV_CAP_PROP_FRAME_WIDTH),
videoCapture.get(Videoio.CV_CAP_PROP_FRAME_HEIGHT))
val fps = videoCapture.get(Videoio.CAP_PROP_FPS)
val videoWriter = VideoWriter(parsedArgs.outputFile, VideoWriter.fourcc('M', 'J', 'P', 'G'), fps, frameSize)
val image = Mat(frameSize,CV_8UC3)
val blended = Mat(frameSize,CV_64FC3)
println("Size: $frameSize fps:$fps over $frameCount frames")
try {
while (videoCapture.read(image)) {
val frameNumber = videoCapture.get(Videoio.CAP_PROP_POS_FRAMES).toInt()
Core.flip(image, image, -1) // I shot the video upside down
Imgproc.accumulate(image,blended)
if(frameNumber>0 && frameNumber%parsedArgs.windowSize==0) {
Core.multiply(blended, Scalar(1.0/parsedArgs.windowSize), blended)
blended.convertTo(image, CV_8UC3);
videoWriter.write(image)
blended.setTo(Scalar(0.0,0.0,0.0))
println(frameNumber.toDouble()/frameCount)
}
}
} finally {
videoCapture.release()
videoWriter.release()
}
這使得這麼多的意義上,我接受我的乘用雙第一通道,其餘現在的答案,如果不是這樣,我只會回來。 :) 謝謝! –
你把我放在正確的道路上,見下文。 –