我想平均每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()
}
这使得这么多的意义上,我接受我的乘用双第一通道,其余现在的答案,如果不是这样,我只会回来。 :) 谢谢! –
你把我放在正确的道路上,见下文。 –