Skip to content

Instantly share code, notes, and snippets.

View sharkdeng's full-sized avatar
💭
single

Shark Deng sharkdeng

💭
single
View GitHub Profile
@sharkdeng
sharkdeng / crop.py
Created November 2, 2020 05:56
crop white background of an image
def crop_white(image: np.ndarray, value: int = 255) -> np.ndarray:
assert image.shape[2] == 3
assert image.dtype == np.uint8
ys, = (image.min((1, 2)) < value).nonzero()
xs, = (image.min(0).min(1) < value).nonzero()
if len(xs) == 0 or len(ys) == 0:
return image
return image[ys.min():ys.max() + 1, xs.min():xs.max() + 1]
@sharkdeng
sharkdeng / jaro-wrinkle.py
Created October 19, 2020 02:47
Jaro-wrinkle to compare string similarity (updated version of Jaro)
def jaro(val1, val2):
'''
Computes the Jaro similarity between 2 sequences from:
Matthew A. Jaro (1989). Advances in record linkage methodology
as applied to the 1985 census of Tampa Florida. Journal of the
American Statistical Association. 84 (406): 414–20.
Returns a value between 0.0 and 1.0.
@sharkdeng
sharkdeng / jaro.py
Last active October 19, 2020 02:46
implementations of jaro similarity
def jaro(val1, val2):
'''
Computes the Jaro similarity between 2 sequences from:
Matthew A. Jaro (1989). Advances in record linkage methodology
as applied to the 1985 census of Tampa Florida. Journal of the
American Statistical Association. 84 (406): 414–20.
@sharkdeng
sharkdeng / slk-581.py
Created October 18, 2020 06:02
SLK-581 code
def slk581(name, birthdate, gender):
result = ''
first_name, last_name = name.split(' ')
# Take the 2nd, 3rd, and 5th letters of a record's family name (surname)
if len(last_name) >=5 :
result += last_name[1] + last_name[2] + last_name[4]
@sharkdeng
sharkdeng / soundex.py
Last active October 18, 2020 12:03
Soundex algorithm
def soundex(string):
# keep first letter of a string
string = string.lower()
result = string[0]
string = string[1:]
@sharkdeng
sharkdeng / speech.html
Last active October 17, 2020 18:41
SpeechSynthesisUtterance-working-1
<html>
<head>
</head>
<body>
<form>
<input type='text'></input>
<select id='voiceSelect'></select>
<input type="submit"></input>
</form>
<script>
@sharkdeng
sharkdeng / detect_duplicates.py
Last active October 14, 2020 10:15
using imagehash to detect duplicates
# detect two duplicate photos
# 1 get hash function
import cv2
import imagehash
funcs = [
imagehash.average_hash,
imagehash.phash,
@sharkdeng
sharkdeng / multiprocessing.py
Last active October 14, 2020 08:45
use multiprocessing to speed up
# you have run this code in .py file (cannot be in .ipynb)
# you have to add the head `if __name__ == '__main__':`
if __name__ == '__main__':
start = time.time()
img_ids = df.image_id.values # a list
pool = Pool(processes=multiprocessing.cpu_count())
pool.map(crop_all_img, img_ids) # (function, list)
@sharkdeng
sharkdeng / crop.py
Created October 14, 2020 05:26
crop white of an image
# Source: https://www.kaggle.com/lopuhin/panda-2020-level-1-2
def crop_white(image: np.ndarray, value: int = 255) -> np.ndarray:
assert image.shape[2] == 3
assert image.dtype == np.uint8
ys, = (image.min((1, 2)) < value).nonzero()
xs, = (image.min(0).min(1) < value).nonzero()
if len(xs) == 0 or len(ys) == 0:
return image
import SwiftUI
struct ContentView: View {
var body: some View {
NavigationView {
NavigationLink(destination: Text("Second View")) {
Text("Hello, World!")
}
.navigationBarTitle("Navigation")
}