336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
opencv로 처리한 이미지에서 검은색 배경을 없애고 싶었다.
검색 결과 아래와 같은 코드로 처리할 수 있었다.
import numpy as np
import matplotlib.pyplot as plt
image = plt.imread('example.png')
plt.imshow(image)
plt.show()
image_copy = image.copy()
black_pixels_mask = np.all(image == [0, 0, 0], axis=-1)
non_black_pixels_mask = np.any(image != [0, 0, 0], axis=-1)
# or non_black_pixels_mask = ~black_pixels_mask
image_copy[black_pixels_mask] = [255, 255, 255]
image_copy[non_black_pixels_mask] = [0, 0, 0]
plt.imshow(image_copy)
plt.show()
즉, 검은색 픽셀 마스크만 따오고 싶을 때는 np.all(image == [0, 0, 0], axis=-1) 를 사용한다.
그리고 해당 마스크를 이용해서 기존 이미지를 덮어주면 된다.
위에서 사용한 np.all 과 np.any는 여기 정리했다.
2019/12/18 - [AI/PyTorch] - [numpy] .all() , .any()
위와 같이 마스크로 걸러내면 가로세로 크기는 기존이미지의 것과 동일하지만 dimension이 없어진다.
즉, RGB 채널이 없어지고 1차원으로 true or false 만 나타낸다.
요런식으로~
출처 : https://stackoverflow.com/questions/52735231/how-to-select-all-non-black-pixels-in-a-numpy-array
'AI > CV & SSL' 카테고리의 다른 글
[개념정리] Bayes error (베이즈 에러) 란? (0) | 2020.02.17 |
---|---|
Active learning 이란? (0) | 2019.11.30 |
Detection 성능 평가를 위한 AP(Average Precision) (7) | 2019.11.27 |
[개념정리] Ground resolution (지상해상도) (0) | 2019.11.16 |
[개념정리] Ranking Loss Functions & Metric Learning (0) | 2019.11.16 |