• Home
  • About
    • Yerim Oh photo

      Yerim Oh

      Happy and worthwhile day by day :)

    • Learn More
    • Email
    • LinkedIn
    • Instagram
    • Github
    • Youtube
  • Posts
    • All Posts
    • All Tags
  • Projects

[08] OpenCV 영상처리

02 Feb 2020

Reading time ~2 minutes

Table of Contents
  • 이미지 연산 목차
  • 이미지 연산
    • 블랜딩
    • 블렌딩
    • 코드
      • C++
      • PYTHON

이미지 연산 목차

  • 블렌딩
  • 코드
    • C++
    • PYTHON

이미지 연산

블랜딩


블렌딩

‘블렌딩 Blending ’ 2개의 입력 이미지의 투명도를 조정하여 2개의 이미지가 겹쳐보이도록 만드는 것
OpenCV는 블렌딩을 위해 addWeighted함수를 제공.

코드

addWeighted(img1, alpha,img2, beta, 0, dst);

다음 수식처럼 작동
\(dst = img1*alpha + img2 * beta + gamma\)

상수 alpha와 beta를 가중치로 사용하여 입력 이미지 img1, img2의 투명도를 조정
상수가 가질 수 있는 범위

  • 0.0~1.0
  • 0.0에 가까울 수록 투명한 상태
  • 1.0에 가까워질수록 불투명
  • gamma는 가중치 합에 추가로 더하는 상수 입니다. 예제 코드는 첫 번째 입력 이미지 (해변) 을 위한 가중치 alpha는 점점 증가시키고,
    두번째 입력 이미지 (고양이) 를 위한 가중치 beta는 점점 감소시킴.
    실행시킨 후 키보드의 아무 키나 누르면 점점 해변 사진은 불투명해지고, 고양이 사진은 투명해짐

image image image

C++

# include < opencv2/opencv.hpp> # include < iostream>
using namespace cv;
using namespace std;

int main()
{
  Mat img1, img2;

  double alpha = 0.0;
  double beta = 1.0;

  while(alpha <= 1.0){
  // addWeighted 파라미터 조정 효과를 확인하기 위해 // 루프 시작할 때마다 이미지를 새로 불러옵니다.
  // 블렌딩하는 두 이미지의 크기는 같아야 합니다.
  img1 = imread("beach.png", IMREAD_COLOR);
  img2 = imread("cat.png", IMREAD_COLOR);
    
  // addWeighted함수를 사용하여 블렌딩을 적용합니다.
  Mat dst;
  addWeighted(img1, alpha, img2, beta, 0, dst);

  // 블렌딩을 위해 사용한 파라미터를 확인합니다.
  cout << alpha << " " << beta << endl;

  // 결과 이미지를 화면에 보여줍니다.
  imshow("dst", dst);
  waitKey(0);

  // img1을 위한 가중치 alpha는 0.1씩 증가시키고 // img2를 위한 가중치 beta는 0.1씩 감소시킵니다.
  // img2 이미지는 점점 투명해지고 img1 사진은 점점 불투명해집니다.
  alpha = alpha + 0.1;
  beta = beta - 0.1;
  }
return 0;
}

PYTHON

import cv2 as cv

alpha = 0.0
beta = 1.0

while alpha <= 1.0:
  # addWeighted 파라미터 조정 효과를 확인하기 위해 # 루프 시작할 때마다 이미지를 새로 불러옵니다.
  # 블렌딩하는 두 이미지의 크기는 같아야 합니다.
  img1 = cv.imread('beach.png', cv.IMREAD_COLOR) 
  img2 = cv.imread('cat.png', cv.IMREAD_COLOR)

  # addWeighted함수를 사용하여 블렌딩을 적용합니다.
  dst = cv.addWeighted(img1, alpha, img2, beta, 0)

  # 블렌딩을 위해 사용한 파라미터를 확인합니다.
  print( alpha, " ", beta)

  # 결과 이미지를 화면에 보여줍니다.
  cv.imshow('dst',dst) cv.waitKey(0)

  # img1을 위한 가중치 alpha는 0.1씩 증가시키고
  # img2를 위한 가중치 beta는 0.1씩 감소시킵니다.
  # img2 이미지는 점점 투명해지고 img1 사진은 점점 불투명해집니다.
  alpha = round(alpha + 0.1, 1) 
  beta = round(beta - 0.1, 1)
  
  cv.destroyAllWindows()


OpenCV Share Tweet +1