와챠의 우당탕탕 개발 기록장
[opevCV-Python] 6장 연습문제 9번(영상 합성) 본문
반응형
9번
8번 문제에 두 개의 트랙바를 추가해서 각 영상의 반영 비율을 조정할 수 있도록 수정하시오.

This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import numpy as np, cv2 | |
def bar(value) : | |
global alpha, beta, title, image1, image2, dst | |
# alpha, bete값 구하기 | |
alpha = cv2.getTrackbarPos('image1', title) / 100 | |
beta = cv2.getTrackbarPos('image2', title) / 100 | |
# alpha, beta값으로 영상 합성하기 | |
image3 = cv2.addWeighted(image1, alpha, image2, beta, 0) # 두영상 비율에 따른 더하기 | |
dst[0:h, w:w*2] = image3[0:h, 0:w] # 배열의 가운데에 image3 넣기 | |
cv2.imshow(title, dst) | |
# 영상 읽기 | |
image1 = cv2.imread("images/add1.jpg", cv2.IMREAD_GRAYSCALE) | |
image2 = cv2.imread("images/add2.jpg", cv2.IMREAD_GRAYSCALE) | |
if image1 is None or image2 is None: raise Exception("영상 파일 읽기 오류 발생") | |
title = ' dst' | |
# 영상 합성 | |
alpha, beta = 0.6, 0.4 # 곱샘 비율 | |
image3 = cv2.addWeighted(image1, alpha, image2, beta, 0) # 두영상 비율에 따른 더하기 | |
# 영상 3개가 들어갈 배열 생성하고 영상 넣기 | |
w, h = image1.shape # image1의 가로, 세로 길이 | |
dst = np.zeros((w, h*3), np.uint8) # image1의 가로, 세로 * 3의 배열 생성 | |
dst[0:h, 0:w] = image1[0:h, 0:w] # 배열의 맨 앞에 image1 넣기 | |
dst[:, w*2:] = image2[0:h, 0:w] # 배열의 맨 뒤에 image2 넣기 | |
dst[0:h, w:w*2] = image3[0:h, 0:w] # 배열의 가운데에 image3 넣기 | |
cv2.imshow(title, dst) | |
# alpha, beta값을 조절할 트랙바 달기 | |
cv2.createTrackbar('image1', title, 50, 100, bar) | |
cv2.createTrackbar('image2', title, 50, 100, bar) | |
cv2.waitKey(0) |
이미지 3개를 한 배열에 담는 거... 처음해보는데 생각보다 별 거 아니네 깔깔
반응형
'이런 저런 공부' 카테고리의 다른 글
[알고리즘] 스파르타 코딩 : 알고리즘 - 1주차 (0) | 2021.07.08 |
---|---|
[openCV-Python] 7장 연습문제 14번(Canny) (0) | 2021.04.09 |
[Open CV-Python] 5장 연습문제 7 , 8, 9번 (3) | 2021.03.29 |
[OpenCV-Python] 4장 연습문제 8 ~ 18번 (0) | 2021.03.28 |
<삼성 오픈소스 컨퍼런스(SOSCON 2020)> 참여 후기 (0) | 2020.10.21 |