반응형

전체 글 169

[Open CV] 기본적인 영상처리 기법 _ 영상의 밝기 조절

금일부터 시작되는 강의는 기본적인 영상 처리기법에 관한 강의로 기초 사용법이 마무리 된 이후 실질적인 영상처리기법에 관한 내용들을 주로 다루는 것 같다. 영상의 화소 처리 기법 ( Point processing ) 영상의 특정 좌표 픽셀 값을 변경하여 출력 영상의 픽셀값으로 설정하는 연산이다. - dst(x,y) = f(src(x,y)) ( src는 입력이미지 dst는 출력이미지 ) 여기서 알 수 있듯이 입력영상에 어떠한 함수처리를해서 ( 변환함수 ) 출력에 다시 입력시켜주는것이다. 함수처리에도 다양한 함수가 존재하는데 항등함수 , 입력영상 대비 밝아지는 출력영상 그래프의 함수 , 이진영상변환 함수등이 있다. 밝기 조절 수식중 하나인 dst(x,y) = src(x,y) + n 을 보면 입력영상 대비 +n..

Program/OPEN_CV 2022.05.06

[Open CV] OpenCV-Python 기초 사용법 _ 실전코딩

위 내용은 2개의 동영상을 재생하고 전환할때 애니메이션 효과를 넣는 이펙트에 관한 강의이다. 동영상 전환 이펙트에는 많은 기능들이 있는데 페이드 인 , 페이트 아웃 , 디졸브 , 밀기 , 확대 등의 기능들이 있다. 위 기능들을 구현하기 위해서 필요한 기능들은 두개의 영상을 동시에 열고 첫번째 동영상의 마지막 몇개의 프레임과 두번째 동영상의 처음 몇개의 프레임을 합성하는 기능 마지막으로 그 영상을 다시 저장하는등의 기능이 필요할 것이다. 아래 코드를 보면서 다시 설명하고자 한다. 일단 실행폴더에 저장되어있는 video1,2 .mp4 파일을 로드하여 cap1,2 의 변수에 저장시킨 뒤 예외처리를 해주는 기본적인 코드로 작성되었다. 그리고 두영상의 크기와 FPS는 같다고 가정한다. ( 1280 * 720 / ..

Program/OPEN_CV 2022.05.05

[Open CV] OpenCV-Python 기초 사용법 _ 연산시간 측정 방법

머신 비전 산업을 보면 가장 중요한게 있는데 그건 연산 시간이다. 어떤 제품의 검사나 검사결과 도출까지의 시간 및 결과들이 그 산업들의 이익과 직결되기때문에 가장 짧은 시간에 가장 정확하게 검사하고 그 결과를 도출해낼 수 있는 능력을보면 머신비전 업체의 능력을 가늠할 수 있다. 일단 컴퓨터 비전은 대용량 데이터를 처리하고있기때문에 매 단계에서 연산 시간을 측정하고 그 시간을 관리해줄 필요가 있다. 전체 알고리즘 중 어떤 한 알고리즘의 영상처리시간이 늦어지는 병목현상이 일어나게 된다면 전체적으로 연산처리시간이 늘어나기때문에 주의할 필요가 있다. 그래서 OpenCV에서는 연산시간을 측정할 수 있는 함수가 있다. - 연산시간 측정 ( cv2.TickMeter ) tm 은 cv2.TickMeter의 객체이고 t..

Program/OPEN_CV 2022.05.04

[Open CV] OpenCV-Python 기초 사용법 _ 트랙바 사용하기

트랙바라고 하는 것은 사용자가 지정한 범위의 값을 컨트롤할 수 있는 컴포넌트라고 할 수 있다. 트랙바 또는 슬라이더 컨트롤이라고도 불린다. 그리고 OpenCV에서 제공하는 유일한 그래픽 사용자 인터페이스라고 볼 수 있다. 트랙바를 사용하기 위해서는 cv2.createTrackbar 라는 함수를 사용해야한다. ( trackbarname, windowname, value, count, onchange ) 의 인자로 이루어져 있다. value는 트랙바의 위치 초기값이고 count 는 트랙바의 최대값 ( 최소값은 항상 0으로 고정 ) onCange는 트랙바의 위치가 변경될때 마다 호출할 콜백함수의 이름이다. 그리고 트랙바 생성도 마찬가지로 imshow 를 한뒤에 createTrackbar를 호출해주어야한다. 위..

Program/OPEN_CV 2022.05.03

[Open CV] OpenCV-Python 기초 사용법 _ 마우스 이벤트 처리하기

OpenCV에서 일반적으로 띄우는 window 창에서는 마우스 이벤트를 사용할 수 있는데이는 우리가 마우수를 사용해서 어떤 동작을하게될때 보통은 무시가되는데setMouseCalllback 함수를 사용하여 그 동작을 돌려받아 다른 기능을 할수 있다. 그래서 콜백함수를 등록한 뒤 사용할 수 있는데 seMouseCallBack ( windowName, onMouse, param = None ) 의 인자를 갖고있다. windowName은 마우스 이벤트를 실행 할 윈도우창의 이름이고 onMouse는 콜백함수의 이름을 지정해줄 수 있는 인자이다. 그리고 마지막에 있는 param 인자는 콜백함수에 전달할 데이터를 의미힌다. 여기서 onMouse 이벤트 처리함수의 형식을 따라서 만들어줘야하는데 onMouse ( eve..

Program/OPEN_CV 2022.05.02

[Open CV] OpenCV-Python 기초 사용법 _ 키보드 이벤트 처리하기

- 키보드 입력 대기함수 ( cv2waitkey(dealy==None) ) 위 함수는 이 전 강의에서도 많이 사용했었는데 키보드의 입력이 들어올때까지 계속해서 기다리는 함수이다. delay = 밀리초 단위 대기 시간. delay가 0보다 작거나 같으면 무한히 기다린다. 디폴트값은 0이다.그리고 키보드의 입력이 들어오면 retval로 반환을 해주는데 눌린 키 값의 ASCII 코드로 반환된다. 따라서 눌린 키보드의 값과 같을때 waitkey 함수를 끝내고 싶다면 '해당ASCII' 와 같을때로 끝내도록 작성하여 줄 수 있다. 그리고 예외적으로 키보드의 특수키를 입력받을수도 있는데 이는 cv2.waitKeyEX() 라는 함수를 사용하여 특수키를 입력받을 수 있다. 여기서 말하는 특수키는 insert, Delet..

Program/OPEN_CV 2022.05.01

[Open CV] OpenCV-Python 기초 사용법 _ 카메라와 동영상 처리하기2

OpenCV에서는 cv2.VideoWriter 클래스를 사용하여 프레임을 동영상 파일로 저장할 수 있다. 약 5가지의 코덱,압축방식,색상,픽셀포멧을 사용할 수 있는데 DIVX XVID FMP4 X264 MJPG 등의 압축방식을 사용할 수 있다. 혹시 아래 강의를 따라하다가 동영상이 잘 실행이 되지않는다고하면 위 코덱을 따로 설치해야 한다. 근데 왠만한 window 10이상의 PC들은 위 코덱들이 설치 되있을 것이다. - 저장을 위한 동영상 파일 열기 ( cv2.VideoWriter ) fourcc 인자에서는 위 5가지의 압축방식을 입력해주면 해당 압축방식으로 저장할 수 있고 중요한건 GrayScale 영상을 저장하고싶으면 그대로 저장할 수 없고 TreuColor 영상으로 변환한 이후에 저장해야한다. 그리..

Program/OPEN_CV 2022.04.30

[Open CV] OpenCV-Python 기초 사용법 _ 카메라와 동영상 처리하기1

Opencv에서는 VideoCapture 클래스를 사용하여 카메라와 동영상으로부터 Frame을 받아오는 작업을 한다. VideoCapture 라는 클래스를 만들고 Open() 의 함수가 카메라 or 동영상을 연결시키고 read() 함수를 계속 호출하여 현재 프레임을 읽어오는 처리를 기본적으로 사용한다. - 카메라 열기 ( cv.VideoCapture ) VideoCapture로 클래스를 열어주고 index의 인자에는 현재 장치관리자에 등록되어있는 카메라의 번호를 입력해준다. 자세히 들어가면 camera_id + domain_offset_id 인데 donmain_offset_id에 0을 입력해주면 운영체제가 알아서 연결해준다. 그래서 카메라 연결수에 맞춰서 인덱스를 입력해주면 된다. 이후 Open이 제대로..

Program/OPEN_CV 2022.04.29

[Open CV] OpenCV-Python 기초 사용법 _ OpenCV 그리기 함수

OpenCV에는 영상 데이터 위에 선이나 도형 텍스틀 그릴 수 있는 기능이 있다. 여기서 중요한건 직선 도형 문자열을 사용할때 영상데이터 자체를 변경을 한다는 점이다. 그래서 영상데이터가 훼손이 될수있기때문에 원본데이터를 백업하고 복사본을 만들어 그 위에 그리는 것이 좋다. 그리고 컬러 도형이나 선을 그리고싶을때에는 영상자체가 컬러 영상이어야지만 동작을 한다. 위 코드를 실행하면 아래 영상이 생성되는데 위 영상에서 사용된 함수들을 설명하면 - img = np.full ( (400,400,3),255,np.uint8 400 x 400 의 RGB성분을 가진 버퍼를 생성하고 모든 RGB값이 255인 영상을 uint8 크기의 형으로 생성한다. - 직선그리기 ( cv2.line ) 영상, 시작점과 끝점 , 선 색..

Program/OPEN_CV 2022.04.28

[Open CV] OpenCV-Python 기초 사용법 _ 마스크 연산과 ROI

ROI라고 하는 것은 Region of interest라고 하는 관심영역인데영상에서 내가 영상처리할 부분의 좌표나 픽셀등을 지정 , 설정해 놓는 것이다. 그리고 마스크연산은 내가 처리하고자하는 곳을 제외한 부분을 0또는 255의 픽셀값으로 구성하는 것이다. 보통은 Mask 픽셀값을 0으로 지정하여 ROI 연산을 할때 0이 아닌부분 ( 1이상인 부분 )을 보고 연산처리한다. OpenCV에서는 마스크 연산을 지원하는 함수들이 몇가지 있는데 이를 설명하면 - cv2.copyTo(src,mask,dst=None) -> dst 위 함수는 저번에 설명했었던 영상 전체 복사가 아닌 영상에서 마스크를 제외한 ROI 영역을 복사하는 함수인데 dst = None을 하게되면 입력받은 영상에 그대로 ROI만 따서 가져오는 기..

Program/OPEN_CV 2022.04.27
반응형