OpenCV-Python 유화 효과 구현 실례
유화 의 간단 한 이 해 는 예술 적 감각 을 가 진 이미지 로 색 채 는 원래 의 그림 보다 더욱 선명 하지만 진실 하지 않다.
그리고 예술 을 감상 하 는 것 을 좋아 하 는 독자 에 게 유 화 를 어느 정도 주 목 했 을 것 이다.유 화 는 섬세 하지 않 고 작은 부분 은 색채 의 축적 으로 인해 매우 모호 하 다.그래서 우리 가 유 화 를 실현 하 는 원 리 는 그림 을 한 줄 한 줄 처리 하여 주변 에 인접 한 거리의 픽 셀 을 흐 트 러 뜨리 는 것 이다.
흐 트 러 진 알고리즘 에 대해 서 는 무 작위 로 설계 할 수 있다.그러나 주의해 야 할 것 은 그림 의 가장자리 까지 처리 할 때 예 를 들 어 왼쪽 아래 에 있 는 마지막 픽 셀 입 니 다.그러면 픽 셀 을 흐 트 러 뜨리 면 오른쪽 에 있 는 픽 셀 을 가 져 오 는 것 은 분명 바람 직 하지 않 습 니 다.오른쪽 에 픽 셀 이 없 으 면 배열 이 경 계 를 넘 을 수 있 기 때 문 입 니 다.그래서 유 화 를 처리 할 때 일부 가장자리 픽 셀 을 인위적으로 잘라 헷 갈 리 게 할 수 있다.
그리고 유 화 는 색 을 사용 하 는 것 이 대담 하기 때문에 우 리 는 이미지 의 색채 공간 을 강화 해 야 한다.python 의 PIL 라 이브 러 리 에는 이미 만들어 진 이미지 Enhance 가 있 습 니 다.이 종 류 는 이미지 의 강화 처리 에 전문 적 으로 사용 되 는데 이미지 의 밝기,대비 도,색도 뿐만 아니 라 이미지 의 예 도 를 강화 할 수 있 기 때문에 우 리 는 유 화 를 통 해 이미지 강화 작업 을 신속하게 실현 할 수 있다.
다음은 이미지 강화 가 어떻게 이 루어 지 는 지 살 펴 보 자.코드 는 다음 과 같 습 니 다:
enh_col=ImageEnhance.Color(img)
color = 2.0
new_img = enh_col.enhance(color)
이 곳 의 img 은 PIL 에서 읽 은 그림 입 니 다.PIL 에서 그림 을 읽 으 려 면 OpenCV 에서 그림 을 읽 는 형식 으로 다음 코드 를 통 해 완성 할 수 있 습 니 다.
new_img = cv2.cvtColor(np.asarray(new_img), cv2.COLOR_RGB2BGR)
그 중,newimg 이 PIL 에서 읽 는 그림 형식 입 니 다.한편,enhance 함수 의 매개 변수 color 는 이미지 색채 의 풍부 도와 포화 도 를 나타 내 고 수치 가 1 일 때 색도 가 변 하지 않 으 며 수치 가 증가 하면 색도 비례 가 증가 하여 이미지 강화 효 과 를 나타 낸다.
유화 효 과 를 실현 하 다.
유화 효 과 를 실현 하 는 원 리 를 알 았 으 니다음은 우 리 는 직접 코드 를 올 려 유화 작업 을 완성 한다.구체 적 인 코드 는 다음 과 같다.
#
def oil_effect(img):
h, w, n = img.shape
new_img = np.zeros((h - 2, w, n), dtype=np.uint8)
for i in range(h - 2):
for j in range(w):
if random.randint(1, 10) % 3 == 0:
new_img[i, j] = img[i - 1, j]
elif random.randint(1, 10) % 2 == 0:
new_img[i, j] = img[i + 1, j]
else:
new_img[i, j] = img[i + 2, j]
return new_img
#
def img_add():
img = Image.open("oil.jpg")
enh_col = ImageEnhance.Color(img)
color = 2.0
new_img = enh_col.enhance(color)
new_img = cv2.cvtColor(np.asarray(new_img), cv2.COLOR_RGB2BGR)
return new_img
if __name__ == "__main__":
img = cv2.imread("49.jpg")
oil_img = oil_effect(img)
cv2.imwrite("oil.jpg", oil_img)
cv2.imshow("0", img)
cv2.imshow("1", img_add())
cv2.waitKey()
cv2.destroyAllWindows()
실행 후 효 과 는 다음 과 같 습 니 다.수채화 효과
유화 효과 처럼 수채화 효과 도 단일 코드 로 완성 할 수 있 지만 가 져 오기 와 이미지 읽 기 는 포함 되 지 않 습 니 다.
cv2.stylization()
import cv2
img = cv2.imread('img.jpg')
res = cv2.stylization(img, sigma_s=60, sigma_r=0.6)
# sigma_s controls the size of the neighborhood. Range 1 - 200
# sigma_r controls the how dissimilar colors within the neighborhood will be averaged. A larger sigma_r results in large regions of constant color. Range 0 - 1
OpenCV-Python 이 유화 효 과 를 실현 하 는 실례 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 관련 OpenCV 유화 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Visual Studio 2017에서 OpenCV 템플릿 프로젝트 만들기・Windows 7 Professional 64bit ・Visual Studio 2017 Version 15.9.14 · OpenCV 3.4.1 OpenCV의 도입 방법 등은 아래를 참조하십시오. Visual Stu...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.