test.srt
1.7 KB
效果比较好,生成命令:
./extract_subtitles.py -crop '(617,955)(685,32)' --crop-debug -filter-code '~cvInGrayRange(it, 0xbf,0xff)' --draw-plot --use-sharp --chunk-size 1000 SomethingNew.mp4
./timeline_ops.py merge frames/timeline_SomethingNew.mp4.txt 0.25|./timeline_ops.py to-lrc 29.97 srt> mux.srt有意思的小细节:
^利用
def postprocessDifferences(self, a: array) -> array: return smooth(a, self.window_size, self.window)
def findPeaks(self, a: array) -> array: return np.asarray(signal.argrelextrema(a, np.greater))[0] #< argrelextrema(_) always (x,) ^利用
scipy.signal 的新关键帧算法,修复了原来盲目对 argrelextrema 用 numpy.subtract 操作的做法processChunk = lambda it: self.ocrWithLocalMaxima(it, reducer)^把帧差 array 和检测出的关键帧 index array 拼合起来的 reduce function
diff_array_parts = map(processChunk, chunked(self.chunk_size, frames))
def concatResults(a, b) -> Tuple[array, array]:
a0, a1 = a
b0, b1 = b
ab0 = concatenate(array([a0, b0]))
ab1 = concatenate(array([a1, b1+len(a0)]))
return (ab0, ab1)
(diff_array, indices) = reduce(concatResults, diff_array_parts)
b1+len(a0) 正好可以把 b1[0] 映射到 a0.lastIndex+1其实我觉得这个『多crop』功能,还是可以给加上
也不需要什么数据结构,TreeSet 的 binary search 是为了优化空间复杂度做的,我也可以直接弄
也不需要什么数据结构,TreeSet 的 binary search 是为了优化空间复杂度做的,我也可以直接弄
Frame.no 预填充啊gui_crop_select.py 已经把这个 multi crop 的功能给做了,我也可以顺水推舟下去嘛This media is not supported in your browser
VIEW IN TELEGRAM
🤔这个是带字幕的,但 Telegram Desktop 好像不能看字幕
🤔开启了
--use-sharp 后真的把时轴打得非常好./extract_subtitles.py --crop-debug -crop '(1106,905)(680,62)' -filter-code '~cvInGrayRange(it, 0x00, 0xaa)' -lang chi_sim --draw-plot --use-sharp --chunk-size 1200 HxN.mkv
./timeline_ops.py merge frames/timeline_HxN.mkv.txt 0.25 |./timeline_ops.py to-lrc 60 srt >mux.srt