사진 input으로 nxn 행렬이 들어 온다.
n 은 'Blue,Green, Red'
각 B, G, R은 0~255 RGB채널이다.
예를들어,
90,90,50 90,90,10 255,255,255
100,100,88 80,80,80 15,75,255
...
이렇게 값이 들어오는 사진이 있다면,
이 사진이 낮에 찍은 것인지, 밤에 찍은 것인지 판단해보자.
아래 파이썬코드로 헀을 시, 정밀하지 않지만 대충 잘 판별이 된다.
result = []
while True:
try:
data = [[int(j) for j in i.split(',')] for i in input().split(' ')]
for k in range(len(data)):
adder = 0
for m in range(3):
adder += data[k][m]
if adder > 240:
result.append("blight")
else:
result.append("dark")
except (EOFError):
break #end of file reached
if result.count("blight") > result.count("dark"):
print("day")
else:
print("night")
*느낀점
b+g+r을 더했을 때, 240이 넘어가면 그 픽셀은 밝다고 여겼다.
전체적인 카운트를 세서 day냐 night냐 판별했는데
굉장히 간단하게 나왔다.
하지만 분명 모든 사진에 적용되지 않는다.
만약 검은 옷을 입고 사진을 찍는다면 사진에서 검은 옷 비율이 많았다면 이건 night로 판명하기 때문이다.
조금 더 나아 간다면
픽셀에서 중앙 부분보다는 엣지 주변에 가중치를 줘서 판별한다면(배경고려)
조금 더 정확한 판단이 나올 수 있을 것 같다.
반응형
'IT > Python' 카테고리의 다른 글
여러개의 DB를 Django 장고에 연동시키기 (0) | 2018.11.12 |
---|---|
/usr/bin/python3: No module named pip (0) | 2018.02.23 |
matplotlib 라이브러리 사용할 때 imread() 오류 (0) | 2018.02.20 |
numpy 설치, basic (0) | 2018.02.20 |
pandas 기초, series (0) | 2018.02.20 |