Python 이미지 처리 그림 조합 및 중첩 사례 튜 토리 얼
6634 단어 Python영상 처리그림 조합 과 중첩
이 예제 스 크 립 트 는 방법 과 논 리 를 포함 합 니 다.그림 읽 기,그림 크기 읽 기,그림 크기 초기 화,그림 크기 조정,그림 조합,그림 덮어 쓰기 와 중첩(자모 그림)을 포함 합 니 다.
그림 전시:
한 장의 소재:
origin_image.jpg
result_image.jpg
face_image.jpg
조합 결과 예시 그림:
조합 과 중첩 완료 후 예제:
조합 과 중첩 완료 후 예제 2:
조합 과 중첩 완료 후 예제 3:
코드 예제:
import os
import time
from os import listdir
from PIL import Image
from loguru import logger
from PIL import Image
def image_synthesis(mother_img, son_img, save_img, size_data, coefficient=2.5, coordinate=None):
"""
mother_img="C:/Users/Administrator/Desktop/QRCode/b.jpg",
son_img="C:/Users/Administrator/Desktop/QRCode/y.png",
save_img="C:/Users/Administrator/Desktop/QRCode/newimg.png",
coordinate=None# None
# coordinate=(50,50)
:param mother_img:
:param son_img:
:param save_img:
:param size_data:
:param coefficient:
:param coordinate: (50, 100)- ( Y , X )
:return:
"""
# ,
M_Img = Image.open(mother_img)
S_Img = Image.open(son_img)
#
M_Img = M_Img.convert("RGBA") # CMYK/RGBA (CMYK ,RGBA )
#
M_Img_w, M_Img_h = M_Img.size # ( )
logger.info(f" :{M_Img.size}")
S_Img_w, S_Img_h = S_Img.size # ( )
logger.info(f" :{S_Img.size}")
son_resize_h = size_data / coefficient
factor = son_resize_h / S_Img_h if son_resize_h > S_Img_h else S_Img_h / son_resize_h # 1 ,2
logger.info(f" : {factor}")
size_w = int(S_Img_w / factor)
size_h = int(S_Img_h / factor)
#
if S_Img_w > size_w:
logger.info(f" ")
S_Img_w = size_w
if S_Img_h > size_h:
logger.info(f" ")
S_Img_h = size_h
#
icon = S_Img.resize((S_Img_w, S_Img_h), Image.ANTIALIAS)
logger.info(f" :{(S_Img_w, S_Img_h)}")
try:
if not coordinate or coordinate == "":
w = int((M_Img_w - S_Img_w) / 2)
h = int((M_Img_h - S_Img_h))
coordinate = (w, h)
# ( , )
M_Img.paste(icon, coordinate, mask=None)
else:
logger.info(" ")
# ( )
M_Img.paste(icon, coordinate, mask=None)
except:
logger.info(" ")
#
M_Img.save(save_img)
return save_img
def image_stitching(origin_img_path, result_img_path, output_img_path, size_data):
# JPG
# im_list = [Image.open(fn) for fn in listdir() if fn.endswith('.jpg')]
origin_data = Image.open(origin_img_path)
result_data = Image.open(result_img_path)
M_Img_w, M_Img_h = origin_data.size #
logger.info(f" : {(M_Img_w, M_Img_h)}")
# ( : ,origin result ( ))
factor = M_Img_h / size_data if size_data > M_Img_h else size_data / M_Img_h # 1 ,2
size_w = int(M_Img_w / factor)
logger.info(f" : {(size_w, size_data)}")
origin_img = origin_data.resize((size_w, size_data), Image.BILINEAR)
result_img = result_data.resize((size_w, size_data), Image.BILINEAR)
image_list = [origin_img, result_img]
#
width, height = image_list[0].size
logger.info(f"--- width = {width}, height = {height}")
#
result = Image.new(image_list[0].mode, (width * len(image_list), height))
# #
for i, im in enumerate(image_list):
result.paste(im, box=(i * width, 0))
#
result.save(output_img_path)
return stitching_img_path
if __name__ == '__main__':
""" """
# root_path = './1000x966'
root_path = './500x841'
# root_path = './1000x667'
size_data = 1280 # TODO
origin_img_path = os.path.join(root_path, 'origin_image.png')
result_img_path = os.path.join(root_path, 'result_image.png')
face_img_path = os.path.join(root_path, 'face_image.png')
stitching_img_path = os.path.join(root_path, 'stitching_.png')
#
last_img_path = image_stitching(origin_img_path, result_img_path, stitching_img_path, size_data)
logger.info(f" ---")
#
synthesis_img_path = os.path.join(root_path, 'synthesis_.png')
res = image_synthesis(last_img_path, face_img_path, synthesis_img_path, size_data,
# coordinate=(100, 500)
)
logger.info(f"--- end --- res = {res}")
파 이 썬 이미지 처리 에 관 한 사진 맞 춤 법 과 쌓 기 사례 튜 토리 얼 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 파 이 썬 이미지 처리 에 관 한 사진 맞 춤 법 과 쌓 기 내용 은 예전 의 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 저 희 를 많이 지 켜 주시 기 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Python의 None과 NULL의 차이점 상세 정보그래서 대상 = 속성 + 방법 (사실 방법도 하나의 속성, 데이터 속성과 구별되는 호출 가능한 속성 같은 속성과 방법을 가진 대상을 클래스, 즉 Classl로 분류할 수 있다.클래스는 하나의 청사진과 같아서 하나의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.