OpenCV(Open source Computer Vision) 란 실시간 컴퓨터 비전을 처리하는 목적으로 만들어진 라이브러리다.

컴퓨터 비전은 영상처리를 포함하는 포괄적인개념이다. 영상처리가 원본영상을 사용자가 원하는 영상으로 바꿔주는 기술이라면, 컴퓨터비전은 영상에서 의미있는 정보를 추출해주는 기술이다.

예로써 객체검출(Object Detection), 객체추적(Object Tracking), 객체인식(Object Recognition)이 있다.

 

객체 검출(Object Detection) : 영상속에서 찾고싶은 물체가 어디있는지 검출하는 작업

객체 추적(Object Tracking) : 영상속 물체가 어디로 움직이는지 추적하는 작업

객체 인식(Object Recgnition) : 영상속 물체가 무엇인지 인식하는 작업

 

OpenCV설치

pip install opencv-contrib-python

opencv엑스트라(contrib)를 포함한 opencv-python 설치

 

필요 모듈 설치

pip install numpy

pip install matplotlib

로 필요 모듈들을 설치합니다.

 

모듈들을 설치된것을 확인하려면

pip list

를사용하여 pip을 이용하여 파일이 설치되었는지 직접찾거나

 

프롬프트창에서 python을 실행시킨뒤

>>> import numpy
>>> numpy.__version__
'1.18.5'


>>> import cv2
>>> cv2.__version__
'4.4.0.44'


>>> import matplotlib
>>> matplotlib.__version__
'3.2.2'

로 확인하는 방법도 있습니다.

오늘해본것은 PyQt에서 QPushButton을 클릭했을때 이미지를 띄우는프로그램을 만들어 보겠습니다.

 

일단 명령프롬프트 (CMD)창에 pip를 이용해 설치해야합니다.

pip install numpy
pip install matplotlib
pip install opencv-python
pip install opencv-contrib-python
pip install opencv-python-headless

를 설치해주어야 합니다.

설치가 완료되었다면 

import cv2

를 해주시면 됩니다.

import sys
import cv2
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *

class Main(QWidget):

    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        # 조직도 버튼
        btn3 = QPushButton('GPIO Pin View')
        btn3.setToolTip('GPIO조직도')
        btn3.clicked.connect(self.GPIO)

        hbox = QHBoxLayout()
        hbox.addWidget(btn3)

        self.setLayout(hbox)
        # 타이틀
        self.setWindowIcon(QIcon('raspberry.png'))
        self.setWindowTitle('raspberry')
        #창 크기,좌표
        self.setGeometry(1000, 150, 300, 200)
        self.show()

    def GPIO(self):
        img = cv2.imread('rasp.png');  # 이미지 불러오기
        cv2.imshow("GPIO PIN", img);  # 이미지 보여주기 (윈도우창 이름, 불러온 이미지)

        k = cv2.waitKey(0)  # 키보드 눌림 대기
        if k == 27:  # ESC키
            cv2.destroyAllWindows();
if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = Main()
    sys.exit(app.exec_())

전체 소스코드입니다.

 

이미지는 제가 하던프로젝트에서 사용하던 라즈베리파이GPIO핀을 연결해준 이미지를 가져왔습니다.

실행시화면입니다.

버튼을 눌렀을떄 나오는 화면입니다.

눌렀을때 나오는 창의 크기는 이미지의 크기와 동일합니다.

+ Recent posts