OpenCV 및 Python을 사용하는 만화 필터

소개



안녕하세요! 이 튜토리얼에서는 모든 이미지에 간단한 만화 필터를 적용하는 방법을 보여줍니다 😃


환경 준비



먼저 다음을 통해 수행할 수 있는 Python 가상 환경을 시작해야 합니다.

python3 -m venv env
source env/bin/activate



종속성 설치



requirements.txt 파일을 만들고 다음을 추가합니다.

# requirements.txt
opencv-python


그런 다음 다음을 통해 설치하십시오.

pip install -r requirements.txt



소스 코드 작성



필요한 모듈 가져오기

import argparse
import cv2


만화 효과를 적용하는 함수 작성

def cartoonize (image):
  gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
  blurImage = cv2.medianBlur(image, 1)

  edges = cv2.adaptiveThreshold(gray, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, 9, 9)

  color = cv2.bilateralFilter(image, 9, 200, 200)

  cartoon = cv2.bitwise_and(color, color, mask = edges)

  return cartoon


이 함수는 기본적으로 이미지를 가져와 만화 스타일 필터를 이미지에 적용한 다음 반환합니다.
중간 파란색은 이미지의 노이즈를 줄이는 데 가장 효과적입니다.
Adaptive Thresholding은 이미지의 잘못된 예측 및 조명 문제를 극복하는 데 사용됩니다.
양방향 필터는 이미지에 대한 가장자리 보존 및 평활화 필터입니다.
마지막으로 bitwise_and를 통해 이미지에 필터를 적용합니다.

마지막으로 메인 함수를 작성해야 합니다.

if __name__ == "__main__":
  ap = argparse.ArgumentParser()
  ap.add_argument("-i", "--image", required = True, help = "Path to input file")
  args = vars(ap.parse_args())

  image = cv2.imread(args["image"])

  cartoonImage = cartoonize(image)

  cv2.imwrite("output.jpg", cartoonImage)
  cv2.imshow("output", cartoonImage)

  cv2.waitKey(0)
  cv2.destroyAllWindows()


여기서 우리가 하는 일은 기본적으로 명령줄에서 이미지 인수를 구문 분석하고 만화 필터를 적용한 다음 출력을 파일에 쓴 다음 출력을 사용자에게 표시하는 것입니다.
그런 다음 모든 키를 수신한 다음 창을 정리합니다.

프로그램 실행



이 프로그램은 다음을 통해 실행할 수 있습니다.

python main.py -i original.jpg


모두 잘 진행되면 다음과 같은 결과가 표시됩니다.



샘플 이미지는 영국 내 고향에서 가져온 것입니다. 😎


결론



여기서는 필터와 같은 간단한 만화를 이미지에 적용하는 방법을 보여 드렸습니다. 자유롭게 자신의 이미지를 실험하고 더 많은 필터를 포함하도록 확장할 수도 있습니다. 😀

행복한 코딩!


내가 일하는 것처럼? 다양한 주제에 대해 포스팅하고 있으니 더 보고 싶으시면 좋아요와 팔로우 부탁드립니다.
또한 저는 커피를 좋아합니다.

좋은 웹페이지 즐겨찾기