• 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

[09] OpenCV 차연산

01 Feb 2020

Reading time ~1 minute

Table of Contents
  • 이미지 연산
    • PYTHON
  • 차연산
    • 코드
      • C++
      • PYTHON

이미지 연산

  • 차연산
    • 코드
      • C++
      • PYTHON

차연산

차연산: 같은 장소를 촬영한 2장 이상의 이미지를 사용하여 새로 추가된 객체를 검출하는 방법.

(배경이미지) image

(객체가 추가된 이미지) image

(객체가 있는 이미지)- (배경만 찍은 이미지) = 차영상

코드

subtract(img_object, img_background, img_sub);

  • img_object: 추가된 그림
  • img_background: 원래그림
  • img_sub: 추출한 그림

[주의]
차영상을 구하면 2장의 이미지가 겹치는 부분이 보일 수도 있음
그러므로 정확한 객체추출을 위해 이진화 필요

image

  • 더 좋은 결과를 위해 색을 반전해줘도 좋겠죠?

C++

# include < opencv2/opencv.hpp>
using namespace cv;
int main()
{ // 노트가 없을 때 이미지 background.png와 // 노트가 있을 때 이미지 object.png를 그레이 스케일로 불러옵니다.
  Mat img_background, img_object;
  img_background = imread("background.png", IMREAD_GRAYSCALE);
  img_object = imread("object.png", IMREAD_GRAYSCALE);

  // 노트가 있는 이미지 img_object에서 // 노트가 없는 이미지 img_background를 빼서 차영상을 얻습니다.
  // 빼는 순서를 바꾸면 안됩니다.
  Mat img_sub;
  subtract(img_object, img_background, img_sub);
  // 차영상을 이진화합니다.
  Mat img_binary;
  threshold(img_sub, img_binary, 5, 255, THRESH_BINARY);
  imshow("background", img_background);
  imshow("object", img_object);
  imshow("sub", img_sub);
  imshow("binary", img_binary);
  waitKey(0);
  return 0;
} 

PYTHON

import cv2 as cv
# 사람이 없을 때 이미지 background.png와 # 사람이 있을 때 이미지 object.png를 불러옵니다.
img_background = cv.imread('background.png', cv.IMREAD_GRAYSCALE) 
img_object = cv.imread('object.png', cv.IMREAD_GRAYSCALE)

# 사람이 있는 이미지 img_object에서 # 사람이 없는 이미지 img_background를 빼서 차영상을 얻습니다.
# 빼는 순서를 바꾸면 안됩니다.
img_sub = cv.subtract(img_object, img_background)

# 차영상을 이진화합니다.
retval,img_binary = cv.threshold(img_sub, 50, 255, cv.THRESH_BINARY)
cv.imshow('background', img_background) 
cv.imshow('object', img_object)
cv.imshow('sub', img_sub)
cv.imshow('binary', img_binary) 

cv.waitKey(0)


OpenCV Share Tweet +1