Hwan's Private_cafe
1-3. Image Processing with Numpy 본문
세 번째 넘파이 글입니다.
이번 글부터 본격적으로 이미지를 불러오고 변환을 할 것입니다.
그러면 가보자구요~
1. 200x200의 img를 만든 후, (0,120), (140,0), (150,199)의 교점으로 직선 3개 구한다.
내부를 흰색으로 채워 출력해라! 단, np.meshgrid를 사용할 것!!
1-1. Code Ex
import numpy as np
import matplotlib.pyplot as plt
img = np.zeros((200,200))
x = np.arange(200)
y = np.arange(200)
X,Y = np.meshgrid(x,y)
a = np.array([0,120])
b = np.array([140,0])
c = np.array([150,199])
inc1 = (b[1]-a[1])/(b[0]-a[0])
inc2 = (c[1]-a[1])/(c[0]-a[0])
inc3 = (c[1]-b[1])/(c[0]-b[0])
for i in range(0,200):
for j in range(0,200):
str1 = (inc1*(x[i]-a[0])) - (y[j]-a[1])
str2 = (inc2*(x[i]-a[0])) - (y[j]-a[1])
str3 = (inc3*(x[i]-b[0])) - (y[j]-b[1])
if (str1<0 and str2>0 and str3<0):
img[i,j] = 1
else:
img[i,j] = 0
plt.imshow(img,'gray')
plt.title("Triangle")
plt.show()
for문을 사용하고 싶지 않았지만.. 아직은 미숙하기 때문에....
좌표들을 직선의 방정식을 이용해 이은뒤 삼각형이 되었다.
직선의 방정식은 검색해서 찾아보시면 되겠습니다. (직선의 방정식을 설명하면 블로그가 길어져요...)
1-2. 실행 이미지
2. 그림판을 이용해 800x600으로 자신의 이름을 적은 이미지를 불어와라.
2-1. Code Ex
import numpy as np
import matplotlib.pyplot as plt
from PIL import Image
path = 'name.png'
img = Image.open(path).convert("L")
plt.imshow(img,'gray')
plt.show()
이미지를 불러오는 코드는 쉽습니다. 그리고 여러가지가 있는데 저는 pillow 라이브러리를 사용해서 불러왔습니다.
2-2. 실행 이미지
3. 읽어들인 이름이미지에서 검은색으로 표시된 픽셀수를 카운트 해라.
3-1. Codr Ex
import numpy as np
import matplotlib.pyplot as plt
from PIL import Image
x = np.arange(800)
y = np.arange(600)
path = 'name.png'
img = Image.open(path).convert("L")
img_arr = np.array(img)
X,Y = np.meshgrid(x,y)
X=0
img_arr = img_arr - X
a=np.count_nonzero(img_arr)
b=(480000-a)
print(b)
갑자기 나온 480,000이라는 숫자는 800x600의 사이즈입니다.
3-2. 실행 이미지
여기까지 기본적인 이미지 불러오기 를 했구요 .
다음글에서는 이미지 색변환, 3차원변환을..? 할거같아요.
'Numpy' 카테고리의 다른 글
1-2. Image Processing with Numpy (0) | 2022.12.22 |
---|---|
1-1. Image Processing with Numpy (0) | 2022.12.22 |
Comments