Skip to content

Instantly share code, notes, and snippets.

View scientificRat's full-sized avatar
😝
Working

Zhengyue Huang scientificRat

😝
Working
  • Tsinghua University
View GitHub Profile
@scientificRat
scientificRat / make_time_lapse.py
Created July 15, 2022 12:23
make time lapse from images
import os
import glob
import moviepy.editor as mpe
IMAGE_ROOT = '/Users/huangzhengyue/work_data/jiaolou3'
OUT_FILE_NAME = 'test3.mp4'
FPS = 12
def main():
@scientificRat
scientificRat / duplicate_image_finder.py
Created November 16, 2021 12:18
find duplicate images in a folder
import os
import sys
import glob
import tqdm
import json
import shutil
import pickle
import argparse
import numpy as np
from PIL import Image
@scientificRat
scientificRat / keymap.py
Last active October 28, 2024 01:22
Use raspberry pi as Bluetooth HID mouse/keyboard emulator
#
# Taken from https://www.gadgetdaily.xyz/create-a-cool-sliding-and-scrollable-mobile-menu/
#
# Convert value returned from Linux event device ("evdev") to a HID code. This
# is reverse of what's actually hardcoded in the kernel.
#
# Lubomir Rintel <[email protected]>
# License: GPL
#
# Ported to a Python module by Liam Fraser.
@scientificRat
scientificRat / PythonPollServer.py
Created April 29, 2020 16:42
Fast Python Poll/Epoll Server
import socket
import selectors
in_stream_selector = selectors.DefaultSelector()
out_stream_selector = selectors.DefaultSelector()
write_handlers = {}
class WriteHandler:
@scientificRat
scientificRat / png_tight_cut.py
Last active June 19, 2020 07:17
png tight cut, cut the png background
import cv2
import os
import sys
import numpy as np
def tight_cut(path):
path = os.path.abspath(path)
file_name = os.path.basename(path)
dir_name = os.path.dirname(path)
@scientificRat
scientificRat / merge_sort.cpp
Created January 16, 2019 08:24
merge_sort implementation in c++(no array copy)
void mergeSort(int *arr, int *out, int start, int end) {
if (end == start + 1) {
out[0] = arr[start];
return;
}
int mid = (start + end) / 2;
int left_length = mid - start;
int right_length = end - mid;
int *left = new int[left_length];
int *right = new int[right_length];
@scientificRat
scientificRat / THU_Tsinghua_conn_tool.py
Created October 17, 2018 11:12
清华大学校园网命令行登陆/退出脚本
import requests
import argparse
import hashlib
def login(username, password):
password = '{MD5_HEX}' + hashlib.md5(password.encode('utf-8')).hexdigest()
r = requests.post('http://net.tsinghua.edu.cn/do_login.php',
data={'action': 'login', 'username': username, 'password': password, 'ac_id': 1})
print(r.text)
@scientificRat
scientificRat / merge_sort.py
Created October 17, 2018 06:33
merge_sort implementation in python
def merge_sort(array):
if len(array) == 1:
return [array[0]]
elif len(array) == 2:
if array[0] > array[1]:
return [array[1], array[0]]
return [array[0], array[1]]
mid = len(array) // 2
left = merge_sort(array[0:mid])
right = merge_sort(array[mid:])
@scientificRat
scientificRat / shell_sort.py
Created October 17, 2018 06:32
shell-sort implementation in python
def shell_sort(array):
gap = len(array) // 2
while gap > 0:
for i in range(gap, len(array)):
for j in range(i - gap, -1, -1):
if array[j] <= array[j + gap]:
break
tmp = array[j]
array[j] = array[j + gap]
array[j + gap] = tmp
@scientificRat
scientificRat / quicksort.py
Created October 17, 2018 06:30
python quicksort
def quick_sort(array):
def partition(array, start, end):
i = start - 1 # i represent the last index of smaller set
pivot = end - 1
# j represent the working pointer
for j in range(start, end - 1):
# swap
if array[j] < array[pivot]:
i += 1
tmp = array[j]