목표 이미지 처리 마스터! 화상 처리 100개 노크 했다 Part6:Q12와 Q20

오늘은 Q12와 엣지 검출계의 문제를 건너 Q20을 해 나갈 것입니다.

Q12: 모션 필터



지쳐 왔기 때문에 특히 아무것도 쓰지 않습니다만 최초 필터의 사이즈 미스라고 해서 전혀 처리 걸리지 않아서 당황했습니다. print 버려 어떻게든 원인 규명. 범 실수 무서운

이번 기억은 np.diag
import cv2
import numpy as np 

#input
img = cv2.imread("imori.jpg")
H,W,C = img.shape
print(img.shape)

#Filter
#kernel size

k = 3
K = np.diag([1]*k).astype(np.float)
K /= k
#K.shape (3,3)
#K = [[1/3,0,0],[0,1/3,0],[0,0,1/3]]

#zero pad 
out = np.zeros((H+2,W+2,C) , dtype=np.float)
out[1:1+H,1:1+W,:] = img.copy().astype(np.float)
tmp = out.copy()
#print(tmp)

#filtered
for y in range(H):
    for x in range(W):
        for c in range(C):
            out[1+y,1+x,c] = np.sum( K * tmp[y:y+3,x:x+3,c])
#remove zero pad 
out = out[1:1+H,1:1+H,:].astype(np.uint8)
print(out)

cv2.imwrite("anspic_q12.jpg", out)
cv2.imshow("result", out)
cv2.waitKey(0)
cv2.destroyAllWindows()

Q20:히스토그램 표시



이번 참고
h tps://py 쵸타타 s 시엔세.ぁゔぉx. 인후 / 마 tp t b / % 3 % 83 % 92 % 3 % 82 % B9 % 3 % 83 % 88 % 3 % 82 % B0 % 3 % 83 % 9 % 3 %83%아0

이것은 가능합니다! 라고 생각해 보니 힘들었다.
import cv2
import numpy as np 
import matplotlib.pyplot as plt 

#input
img = cv2.imread("imori_dark.jpg").astype(np.float)

plt.hist(img, bins=255, range=(0,255))
plt.savefig("out.png")
plt.show()

위처럼 쓰면 화가났다.
# python q20.py
Traceback (most recent call last):
  File "q20.py", line 8, in <module>
    plt.hist(img, bins=255, range=(0,255))
  File "/usr/local/lib/python3.7/site-packages/matplotlib/pyplot.py", line 2610, in hist
    if data is not None else {}), **kwargs)
  File "/usr/local/lib/python3.7/site-packages/matplotlib/__init__.py", line 1543, in inner
    return func(ax, *map(sanitize_sequence, args), **kwargs)
  File "/usr/local/lib/python3.7/site-packages/matplotlib/axes/_axes.py", line 6569, in hist
    x = cbook._reshape_2D(x, 'x')
  File "/usr/local/lib/python3.7/site-packages/matplotlib/cbook/__init__.py", line 1386, in _reshape_2D
    raise ValueError("{} must have 2 or fewer dimensions".format(name))
ValueError: x must have 2 or fewer dimensions


데이터의 배열이 2차원 이상이 되어 있다고 화났습니다.
1차원이 되도록 변환
np.ravel 사용

참고
htps : //에서. 응 kmk. 메 / py 텐 - 없는 mpy - ゔ ぇ l - ぁ
import cv2
import numpy as np 
import matplotlib.pyplot as plt 

#input
img = cv2.imread("imori_dark.jpg").astype(np.float)

plt.hist(img.ravel(), bins=255, range=(0,255))
plt.savefig("out.png")
plt.show()

그릴 수 있었다!


결론



역시 뭔가 표시할 수 있어서 기쁩니다

좋은 웹페이지 즐겨찾기