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

技术相干订阅~
另外有 throws 闲杂频道 @dsuset
转载频道 @dsusep
极小可能会有批评zf的消息 如有不适可退出
suse小站(面向运气编程): https://WOJS.org/#/
Download Telegram
Forwarded from dnaugsuz
其实这个项目本来就不适合用 Python 写
原作者内存优化得太垃圾,把所有帧都放内存里…… 我这 4G 处理个 4 分钟压缩后 4M 的小视频都撑不过 1:00
我正在考虑是添加一个 gc 内存压力提示呢,还是用其他语言重写呢,还是换 pypy 呢 🤔
反正最后一部分 cv 是不可以继续用 Python 的,内存压力实在是太大了……
duangsuse::Echo
🐶 Sticker
我觉得可以做一个 GUI,来支持时轴框选歌词区域。
horizontalLayout {
TextureView,
Sidebar(verticalLayout {
playerTime,
horizontalLayout { playerControl, btnNewCrop }
ListView(crops/*time rect*/),
TextView /*current_subtitle*/,
TextArea /*time_subtitles*/
})
}
#pragma once
#include <QMainWindow>

namespace Ui {
class MainWindow;
}

class MainWindow: public QMainWindow { Q_OBJECT
public:
MainWindow(QWidget* parent = nullptr);
~MainWindow();
private slots:
void onShowToastClicked();
void onShowProgressSpinnerClicked();
void onShowProgressHorizontalClicked();
private:
Ui::MainWindow* ui;
};
🤔 很久没 Qt 了,应该默写下这个
Forwarded from dnaugsuz
This media is not supported in your browser
VIEW IN TELEGRAM
不过上面的那个估计是机器学习论文里提供的…… 没有任何封装,不能直接拿来对视频操作
Forwarded from dnaugsuz
权当练习用连重命名都没有的编辑器重构 “Python脚本”……
add_argument(name, metavar, nargs, action, type, default, help) 🤔
duangsuse::Echo
add_argument(name, metavar, nargs, action, type, default, help) 🤔
原作者混合了 cv2 和 Python PIL 图像处理,我给它改回纯 cv2,方便使用……
extract_subtitles.py
7.8 KB
我给改回来了,现在用的 cv2.imreadcv2.UMat 的 slice
extract_subtitles.py
8.3 KB
实操把 frames.append 注释掉不会卡死,cv2 不存在内存泄漏问题,但是如何优化内存使用正在重构
🤔我想到一个有意思的方法,可以把这个函数改成 Generator,就不会有太大内存压力了
duangsuse::Echo
可以先开源…… 完成了! https://github.com/duangsuse/extract-subtitles
./extract_subtitles.py -crop '(313,951)(1343,45)' --crop-debug SomethingNew.mp4
[Video Path] SomethingNew.mp4
[Crop] [[313, 951], [1343, 45]]
[Threshold] None
[Subtitle Language] chi_sim
[Frame Directory] frames
[Filter Window Size] 13
Extracting key frames...
[Video Props] (2837, 29, 1920, 1080)
100% |#############################################################################|
smooth [...x386], 13 hanning
q120 How can something be so nice? 面 本
177 How can sgomething be snicey

3
192 Yet so shocking, yet so mice,|

3
220 Yet so shocking, yet so mice,|
241 Yet so shocking, yet so iiice,|
261 [ee二和:和-TAR om
269 [ee二和iT:和-TAR 5owm
284 [ee二和[让:和-IT om
299 [wei二和:和 -TAN Dowm
306 [ee二和:和-IT 5owm
320 How can something bel sg new?
338 YetSoknown but yet,SsSomnew?
361 YetSoknown but yetSomnew?
duangsuse::Echo
🤔 Sticker
说实在话,其实原作者的算法也没有什么问题,不仅在于……关键还是在于没有 windowing,数据一下子都处理完,不能按照固定的大小一部分一部分处理
不知道可不可以解决问题
#Python #code 真可怜,无用的代码被丢掉了…… 看来纪念下吧
printedCall_fmt = lambda op, args: f"{getFuncName(op)} {' '.join(map(str, args))}"
printedCall_on_result = lambda r: print("" if r == None else f" -> {r}")
def printedCall(op, fmt = printedCall_fmt, on_result = printedCall_on_result):
def _invoke(*args, **kwargs):
print(fmt(op, args), end="")
res = op(*args, **kwargs)
on_result(res)
return res
return _invoke


def getFuncName(func): return findall("^<.*function (\S+)", repr(func))[0]