diff --git a/basic/views.py b/basic/views.py index 75f30f4..e176604 100644 --- a/basic/views.py +++ b/basic/views.py @@ -965,6 +965,50 @@ def process_median_sort(img): return output +def process_high_choice(img, limit): + output = np.zeros(img.shape, np.uint8) + for i in range(img.shape[0]): + for j in range(img.shape[1]): + if img[i][j] > limit: + output[i][j] = img[i][j] + else: + output[i][j] = 0 + return output + + +def process_low_choice(img, limit): + output = np.zeros(img.shape, np.uint8) + for i in range(img.shape[0]): + for j in range(img.shape[1]): + if img[i][j] < limit: + output[i][j] = img[i][j] + else: + output[i][j] = 0 + return output + + +def process_pass_choice(img, min, max): + output = np.zeros(img.shape, np.uint8) + for i in range(img.shape[0]): + for j in range(img.shape[1]): + if min < img[i][j] < max: + output[i][j] = img[i][j] + else: + output[i][j] = 255 + return output + + +def process_stop_choice(img, min, max): + output = np.zeros(img.shape, np.uint8) + for i in range(img.shape[0]): + for j in range(img.shape[1]): + if min < img[i][j] < max: + output[i][j] = 0 + else: + output[i][j] = img[i][j] + return output + + @csrf_exempt def filtration(request): if request.method == 'POST': @@ -987,6 +1031,21 @@ def filtration(request): img = process_median_sort(img) elif detail_type == 'min': img = process_min_sort(img) + elif op == 'choice': + if detail_type == 'low': + limit = para.get('limit', 20) + img = process_low_choice(img, limit) + elif detail_type == 'high': + limit = para.get('limit', 200) + img = process_high_choice(img, limit) + elif detail_type == 'pass': + min_r = para.get('min', 20) + max_r = para.get('max', 200) + img = process_pass_choice(img, min_r, max_r) + elif detail_type == 'stop': + min_r = para.get('min', 20) + max_r = para.get('max', 200) + img = process_stop_choice(img, min_r, max_r) filename = getImageName() + DEFAULT_FORMAT cv2.imwrite(PREFIX + filename, img) return HttpResponse(filename)