일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 그리드분할
- docker
- Set
- 컨테이너
- 파이썬
- graph
- 이미지빌드
- GIS
- 알고리즘
- 패치분할
- Python
- geojson
- 도커
- GNN
- GCN
- 동명이인찾기
- osmnx
- geopandas
- 귀여운고래
- pyvista
- MESH
- 폴더조사
- 좌표거리
- 3d
- STL
- 3d데이터
- 도커 레이어
- python최단거리
- 지하철역좌표
- 데이터입수
- Today
- Total
이것저것 기록
[python, openCV] 이미지 파일에서 특정 픽셀값만 추출하기 본문
영상처리를 하다보면 여러 색이 뒤죽박죽 섞인 이미지에서 특정 색만 추출하고 싶을 때가 있다.
예를 들어 다음과 같은 사진이 있다고 생각해보자.
여기서 60,000이상 되는 지역만 뽑아내고 싶다면 어떻게 해야할까?
우선 그림판에 해당 이미지 파일을 연다.
이건 진짜 꿀팁인데, 이미지에서 특정 픽셀의 색상값을 알고 싶을 때 그림판처럼 빠르고 쉬운 툴이 없다.
빨간색 동그라미는 '색 선택' 툴이다. (과학시간에 한번쯤 써봤을 스포이드 모양)
이 툴을 클릭한 후 내가 뽑고 싶은 색상값의 픽셀을 여드름 짜듯이 찍어준다. 고도의 정밀도를 요구로 하는 작업은 아니니까 대충 찍어주면 된다.
찍었으면, 오른쪽 초록색의 색편집 툴을 클릭한다.
우측 하단의 빨강, 녹색, 파랑에 해당하는 값이 바로 이 픽셀의 색상값이다. so easy....
아무튼 이 색상값을 잘 기억하고 본격적인 코딩으로 넘어가자.
일단 제일 먼저 필요한 라이브러리부터 import 하자.
import os
import cv2
import numpy as np
몇 줄 안되는 코드니까 바로 시작하겠음.
os.chdir('폴더 경로')
img = cv2.imread('seoul.jpg') #파일명
canvas = np.zeros(shape=img.shape, dtype=np.uint8)
canvas.fill(255)
canvas[np.where((img == [1,0,164]).all(axis = 2))] = [255,0,0]
cv2.imwrite('_seoul.png', canvas)
진짜 별 거 없다.
불러온 이미지 크기와 동일한 빈 캔버스를 만들어주고 (canvas = np.zeros()) 흰색으로 채워준다.
나는 검정색으로 채워줬다.
해당 이미지의 특정 색상값 ([1,0,164])과 동일한 좌표에 내가 원하는 색상값([255,0,0])을 넣어주면 끝이다.
짠.
정말 별 거 없는 코드인데, 한창 코딩 처음 시작했을 때는 이런 것도 몰라서 헤맸었다...
아 그리고 레스터 이미지에서 특정 색상값을 추출할 때는 주의할 점이 있다.
바로 색상값이 바뀌는 변경구간이다.
예를 들어 빨강 >> 회색 으로 바뀌는 구간을 확대해 보면 경계 부분의 색상값은 빨강도, 회색도 아닌 이상한 놈들이 있다.
이런 구간이 있기 때문에 보통 이진화를 수행한 뒤에 색상값 분리를 수행하곤 한다.
뭐 이런 이슈 사항이 있을 수 있다~ 정도로 염두에 두는 걸로!
'코린이 > 실무를 위한 코딩 기록' 카테고리의 다른 글
[python] NetworkX를 사용해서 데이터분석 및 시각화 해보기 (4) | 2020.11.02 |
---|---|
[python, folium] 서울 따릉이 대여소 (x,y)좌표 변환 및 지도 시각화 (1) | 2020.10.09 |
[python] 파이썬에서 shape파일을 불러오는 여러 방법들 및 활용 (0) | 2020.09.24 |
[python, shapely] 이미지(raster)에서 폴리곤(vector) 추출하기 (1) | 2020.09.21 |
[python, PIL] 직사각형에서 정사각형 이미지로 변환하기 (0) | 2020.09.21 |