duangsuse::Echo
713 subscribers
4.24K photos
127 videos
583 files
6.46K links
import this:
美而不丑、明而不暗、短而不凡、长而不乱,扁平不宽,读而后码,行之天下,勿托地上天国。
异常勿吞,难过勿过,叹一真理。效率是很重要,盲目最是低效。
简明是可靠的先验,不是可靠的祭品。
知其变,守其恒,为天下式;穷其变,知不穷,得地上势。知变守恒却穷变知新,我认真理,我不认真。

技术相干订阅~
另外有 throws 闲杂频道 @dsuset
转载频道 @dsusep
极小可能会有批评zf的消息 如有不适可退出
suse小站(面向运气编程): https://WOJS.org/#/
Download Telegram
https://github.com/dhakehurst/net.akehurst.language/blob/efafa3e57f89ddea2f81ca3080121f2e70cce9e0/net.akehurst.language/agl-processor/src/commonMain/kotlin/parser/sppt/SharedPackedParseTreeDefault.kt

这一系列操作…… 很算法啊
一般类似 ANTLR 一样的工具也会有 rewrite/action 的选择吧,可这个几乎只有 SPPT(shared packed parse tree) 一样……
ParserKt 是纯递归下降解析组合子,所以没有 YaCC 系的 Parser-Tree 说法,只有内部递归的调用树和临时的 Fold 对象,没有这种……
#Telegram #sysadmin 🤔好方便啊,自动更新
Forwarded from 〄FW
Forwarded from dnaugsuz
This media is not supported in your browser
VIEW IN TELEGRAM
Forwarded from dnaugsuz
这个草死了,我的尴尬症犯了
草,原来你们对代码质量是这种见地, 143 阅 0 赞
./gui_crop_select.py ~/视频/IMG_6302.MP4

./extract_subtitles.py -crop '593(85,287)[481,38]' --crop-debug -filter-code '~cvInGrayRange(it, 0xcc, 0xff)' -lang chi_sim --chunk-size 1000 --use-sharp ~/视频/IMG_6302.MP4
现场来提取一个字幕时轴^

./timeline_ops.py merge frames/timeline_IMG_6302.MP4.txt 0.25|./timeline_ops.py to-lrc 25 srt>test.srt
This media is not supported in your browser
VIEW IN TELEGRAM
一则讽刺谷歌Dragonfly*和Google亲匪行为的视频。
谷歌,不作恶(除非有利可图)
1:38
狗不理习维尼🤣

*又名蜻蜓计划,意图创造审查版谷歌引擎,后因争议取消了这个项目。
#乳制品 #旧浪新冲🌊
duangsuse::Echo
./gui_crop_select.py ~/视频/IMG_6302.MP4 ./extract_subtitles.py -crop '593(85,287)[481,38]' --crop-debug -filter-code '~cvInGrayRange(it, 0xcc, 0xff)' -lang chi_sim --chunk-size 1000 --use-sharp ~/视频/IMG_6302.MP4 现场来提取一个字幕时轴^ ./timeline_ops.py merge fra…
(\d{2}): (\d{2}): (\S+)-> (\d{2}): (\d{2}): (\S+)
$1:$2:$3 --> $4:$5:$6

然后到 Google 上翻译下,以这个正则替换修复破损的 SRT 格式。

ffmpeg -i IMG_6302.MP4 -vf subtitles=IMG_6302_en.srt IMG_6302_zhEn.mp4
🤔 我们来说说之前的 Montage.py 策划。
蒙太奇图是一种艺术画,它用许多相对整齐的子构件来构筑一副图画。

之前我们的安排就是,利用 Python Pillow / Java AWT+ImageIO 的接口,有一个画布以后直接取 color average (实际图像一般有三个 channel,我们只需给这片区域 int[3][] 取 avg 即可)
然后遮盖那一部分原图区域的项就用这个颜色。

不过还有个问题,就是怎么知道项都放哪,之前的项目是有一个 LayoutPlanner,它会 yield 给一大堆 Rect(矩形区域),然后作画也在那上面(准确的说是给 draw 的算法一个 "sub-image" (后来改 crop 了) )完成,结果最后改来改去失败了,效果很不好
但后来我发现呢…… LayoutPlanner 实际上是不能独立于绘制算法要绘制的区域而存在的,所以失败是当然的。

现在的抽象会是这样
class Drawable:
def drawOn(img: Image) -> Rect: pass
class TintedDrawable:
def drawOn(img: Image, tint: Color) -> Rect: pass


然后布局就是经典的 for y for x 了, x >= width 就 y += avg_h 。

参数:
font, font-size
color-mode, crop, scale (float / tuple)
image items

后来看了另一个项目才想起来的:
space-hv (tuple)
tint-color (code on sub-image lambda it: averageColor(it) )
draw-unless (code on sub-image lambda it: pixelsInRange((0xFF,0xFF,0xFF), 10) / it.count() > 0.5 )
#dev #PLT 以前经常把类似 LuaJava, JamRuby, Lua-intrf 之类的东西称为“高阶语言桥”或“语言绑定” (相反 SWIG 之类的 bindgen 就不会了?)
想想这无非是一个好看没不讨喜、充满民科气息的名词。
给两门语言创建“绑定”,其中一般有一个采用比较“脚本化”的实现方式而非静态编译之类,但关键在于提供底层 API (如 C API),然后再把 API 和另一门语言创建更高层的绑定(整句话都不太严谨,毕竟涉及 FFI(foreign function interface) 这种非常实践性的问题)

绑定和一般的库绑定会有较大的不同之处,主要体现在数据对象的封送、类型转换(可能存在)、对应的 GC 接口互调等等。
一个主动一个从动,但从“语言实现”绑定的角度看,如 LuaJava 在 Lua 侧能访问 Java 的对象成员,Java 侧也能从 Lua 的 boolean, number, table 等获得信息,这是主要功能。

我应该多写点 C++,光 Java 是不够的,但是我现在真的熟悉 JDK 么……
🤔 xywhijnmhv
草,虽然目前是抄的