其实我觉得这个『多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.srtThis media is not supported in your browser
VIEW IN TELEGRAM
#GitHub #Python #project duangsuse/extract-subtitles (a fork) 内嵌字幕提取(白字为提取后的字幕,半自动需要手工修改部分文本和设置优化滤镜Python代码) 视频来源YouTube
#DontKnow 🤔早上我起床前问了下duangsuse (自言自语)
代码风格上,为什么要把 ES6 generator 的 * 直接贴在 function 的后面呢
回答说,因为这样语义更明确, generator function 就是
那 C++ 里为什么要写
“语义更明确,指针当然要贴着类型”
等等……
“🤪看来以后得区别对待 C 和 ES6 的星号了”
代码风格上,为什么要把 ES6 generator 的 * 直接贴在 function 的后面呢
回答说,因为这样语义更明确, generator function 就是
function*。那 C++ 里为什么要写
Ui::MainWindow* ui; 呢?“语义更明确,指针当然要贴着类型”
等等……
int *a, *b; 呢“🤪看来以后得区别对待 C 和 ES6 的星号了”
为了在 #Python 里在保证类型安全的同时尽量减少开销,我决定新特性 "multi-crop" 直接这样实现:
参数输入上,外部利用 argparse 的
直接在主程序进行列表的填充工作。不过,我们会为
大致意图上是这样,在 make extractor 和 call extractor 里都得加逻辑,分支都不止两个,比较麻烦
不用额外判断的原因是直接利用 Python 的方法解析,传递不同 class 的对象进去
-crop "0 (x,y)(w,h)" -crop "233 (x,y)(w,h)" 参数输入上,外部利用 argparse 的
nargs="*" 来进行,内部使用 List<Rect>? (index=frame_no) 来进行表达。直接在主程序进行列表的填充工作。不过,我们会为
len(cfg.crop) == 1 的情况进行特殊处理,让每帧处理时不必显式判断是否要 index 这个 list。len_crop = len(cfg.crop)
(SimpleExtract if len_prop <= 1 else ComplexExtract) (None if len_crop == 0 else cfg.prop) 大致意图上是这样,在 make extractor 和 call extractor 里都得加逻辑,分支都不止两个,比较麻烦
不用额外判断的原因是直接利用 Python 的方法解析,传递不同 class 的对象进去