OpenCV-Python 유화 효과 구현 실례

3532 단어 OpenCV유화.
유화 의 실현 원리
유화 의 간단 한 이 해 는 예술 적 감각 을 가 진 이미지 로 색 채 는 원래 의 그림 보다 더욱 선명 하지만 진실 하지 않다.
그리고 예술 을 감상 하 는 것 을 좋아 하 는 독자 에 게 유 화 를 어느 정도 주 목 했 을 것 이다.유 화 는 섬세 하지 않 고 작은 부분 은 색채 의 축적 으로 인해 매우 모호 하 다.그래서 우리 가 유 화 를 실현 하 는 원 리 는 그림 을 한 줄 한 줄 처리 하여 주변 에 인접 한 거리의 픽 셀 을 흐 트 러 뜨리 는 것 이다.
흐 트 러 진 알고리즘 에 대해 서 는 무 작위 로 설계 할 수 있다.그러나 주의해 야 할 것 은 그림 의 가장자리 까지 처리 할 때 예 를 들 어 왼쪽 아래 에 있 는 마지막 픽 셀 입 니 다.그러면 픽 셀 을 흐 트 러 뜨리 면 오른쪽 에 있 는 픽 셀 을 가 져 오 는 것 은 분명 바람 직 하지 않 습 니 다.오른쪽 에 픽 셀 이 없 으 면 배열 이 경 계 를 넘 을 수 있 기 때 문 입 니 다.그래서 유 화 를 처리 할 때 일부 가장자리 픽 셀 을 인위적으로 잘라 헷 갈 리 게 할 수 있다.
그리고 유 화 는 색 을 사용 하 는 것 이 대담 하기 때문에 우 리 는 이미지 의 색채 공간 을 강화 해 야 한다.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 유화 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!

좋은 웹페이지 즐겨찾기