Register
Login
Resources
Docs Blog Datasets Glossary Case Studies Tutorials & Webinars
Product
Data Engine LLMs Platform Enterprise
Pricing Explore
Connect to our Discord channel

blursharpen.py 1.4 KB

You have to be logged in to leave a comment. Sign In
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
  1. import cv2
  2. import numpy as np
  3. def LinearMotionBlur(image, size, angle):
  4. k = np.zeros((size, size), dtype=np.float32)
  5. k[ (size-1)// 2 , :] = np.ones(size, dtype=np.float32)
  6. k = cv2.warpAffine(k, cv2.getRotationMatrix2D( (size / 2 -0.5 , size / 2 -0.5 ) , angle, 1.0), (size, size) )
  7. k = k * ( 1.0 / np.sum(k) )
  8. return cv2.filter2D(image, -1, k)
  9. def blursharpen (img, sharpen_mode=0, kernel_size=3, amount=100):
  10. if kernel_size % 2 == 0:
  11. kernel_size += 1
  12. if amount > 0:
  13. if sharpen_mode == 1: #box
  14. kernel = np.zeros( (kernel_size, kernel_size), dtype=np.float32)
  15. kernel[ kernel_size//2, kernel_size//2] = 1.0
  16. box_filter = np.ones( (kernel_size, kernel_size), dtype=np.float32) / (kernel_size**2)
  17. kernel = kernel + (kernel - box_filter) * amount
  18. return cv2.filter2D(img, -1, kernel)
  19. elif sharpen_mode == 2: #gaussian
  20. blur = cv2.GaussianBlur(img, (kernel_size, kernel_size) , 0)
  21. img = cv2.addWeighted(img, 1.0 + (0.5 * amount), blur, -(0.5 * amount), 0)
  22. return img
  23. elif amount < 0:
  24. n = -amount
  25. while n > 0:
  26. img_blur = cv2.medianBlur(img, 5)
  27. if int(n / 10) != 0:
  28. img = img_blur
  29. else:
  30. pass_power = (n % 10) / 10.0
  31. img = img*(1.0-pass_power)+img_blur*pass_power
  32. n = max(n-10,0)
  33. return img
  34. return img
Tip!

Press p or to see the previous file or, n or to see the next file

Comments

Loading...