소개
강의
전체1수강평
- 좋은 강의 감사합니다.
김현복
2023.05.31
0
- 설명이 쉽게 잘 하시네요.
youngman1.cho
2022.11.17
0
- 짧고 요약이 잘된 강의입니다.
lee_jinhee
2022.04.20
0
- 실습위주이면서 이론설명까지 과정 과정마다 감사하게 교육받고 있습니다. 가성비교육으로 최고입니다.
ukyo1003
2022.03.26
0
게시글
질문&답변
2024.01.18
동영상 실행이 안돼요
안녕하세요. 윤대희입니다. 코드와 파일 경로가 모두 올바르다면, 폼과 이벤트가 연결되었는지 확인 부탁드립니다.
- 0
- 2
- 70
질문&답변
2022.08.18
OpenCV에서 사용 가능한 이미지의 최대 크기
안녕하세요. Kim J님 윤대희입니다. 말씀하시는 크기가, 파일의 크기를 말씀하시는 걸로 이해가 됩니다. 사용하시는 버전이나 플랫폼에 따라 약간씩 다를 수 있으나, 2147483647 bytes를 제한으로 합니다. 용량 제한이 아니더라도, 최대 픽셀 개수에서 제한이 될 수 있습니다. 픽셀은 2^32개 까지 가능합니다. 600MB가 넘는 대용량 이미지도 사용은 가능합니다. 만약에 이미지가 아닌 동영상이라면 메모리 누수 문제가 발생할 수 있습니다. 파일의 크기가 큰 동영상의 경우, FFmpeg 라이브러리를 이용해서 불러오신 다음, CV처리를 하시길 권장 드립니다. 감사합니다.
- 0
- 1
- 607
질문&답변
2022.05.28
차량 번호 인식 프로그램을 만들려면 제가 뭘 더 공부해야 되나요?
idenfrin님 안녕하세요. 윤대희입니다. 말씀하신 동영상의 내용을 구현하는 방법은 여러가지 방법이 있을 것 같습니다. 그 중 몇 가지를 공유해드리겠습니다. 첫 번째로는 인식의 개념이 아닌, OpenCV를 활용해 검출하는 방법입니다. 공유해주신 동영상에서는 자동차의 번호판의 이미지 패턴이 하얀색 네모 안에 검은색 글자 영역으로 구성되어 있습니다. 그러므로, 하얀색 사각형을 찾은 다음, 내부의 검은색 영역을 검출한다음 boundingBox로 생성하는 방법이 있을 수 있습니다. 이 방법은 비슷한 이미지 패턴이 반복되는 경우 단순하게 검출하는 방법입니다. 두 번째는 OpenCV ML 기능을 활용해 검출하는 방법입니다. SVM, ORB, BRIEF 등의 함수를 활용해 글자나 글자 모양을 학습시키고 검출하는 방법입니다. 현재 인프런 강의에서는 제공되지는 않지만, OpenCV 함수에서 지원되는 기능이므로 OpenCV Docs나 https://076923.github.io/posts/Python-opencv-38/ 를 비롯해 오픈소스 등을 참고해보시면 쉽게 구현하실 수 있습니다. 세 번째는 PyTorch나 Tensorflow 등 딥 러닝을 통해 구현하는 방법입니다. 데이터 세트를 구축하신 다음, 모델링을 통해 OCR 모델을 구현하시면 됩니다. 또는 사전에 구현되어 있는 모델을 적용하시면 됩니다. 네 번째는 Tesseract-OCR을 활용하는 방법입니다. https://076923.github.io/posts/C-tesseract-1/ C#에서는 다음과 같이 설치하셔서 테스트해보실 수 있습니다. 마지막으로 API를 통해 OCR 기능을 구매하여 사용하시는 방법이 있습니다. 대표적으로 Google Vision API OCR이나 CLOVA OCR이 있습니다. 현재 가장 권장드리는 방법은 Tesseract-OCR를 활용하여 텍스트를 추출하시는 것을 권유드립니다. 감사합니다. 윤대희 드림.
- 0
- 1
- 2.3K
질문&답변
2022.04.10
동영상 저장시 저장시간과 재생시간 상이함
안녕하세요. ukyo1003님 윤대희입니다. 비디오 저장 클래스는 CvVideoWriter("경로 및 이름", "FourCC", FPS, 영상 크기) 입니다. CvVideoWriter OpenCV_video = new CvVideoWriter("../../Record.avi", "XVID", 15, Cv.Size(640, 480)); 의 형태로 인스턴스를 생성했다면, FPS는 15가 됩니다. - FPS는 영상이 바뀌는 속도를 의미합니다. 그러므로, 초당 15개의 프레임(이미지)를 저장해야합니다. 초당 15개의 프레임을 저장하기 위해서는 timer2의 Interval 간격이 초당 15개의 프레임을 저장할 수 있으면 됩니다. Timer에서 Interval = 1000 = 1초 를 의미합니다. 그러므로 15개의 프레임을 1초에 저장하면 되므로, 1000 / 15 = 66.66666666666667 입니다. Interval을 66.6666.. 으로 설정한다면 FPS 15의 처리와 동일하게 설정할 수 있습니다. 만약, 비디오 파일과 동일한 속도의 파일로 저장하려면, 불러온 동영상 파일의 프레임 속도를 확인하면 재생시간과 동일한 속도로 저장할 수 있습니다. (사진) 특정 동영상 파일의 프레임 속도가 29.97 프레임/초 라면, 1000ms동안 약 30개를 처리합니다. 그러므로, Timer의 Interval을 1000/30 = 33.333333으로 설정하면 동일한 시간으로 설정될 수 있습니다. 단, Timer 내부에 이미지 프로세싱 등을 처리하는 코드가 존재한다면, Interval 동안 연산시간이 포함되므로, 연산을 모두 완료한 후에 프레임을 저장하는 코드를 구현하거나 연산 시간을 고려해서 Interval을 조정합니다. 감사합니다. - 윤대희 드림
- 0
- 2
- 1.4K
질문&답변
2022.03.16
코너검출 일정 부분검출이 가능한 것인가요?
안녕하세요. 이현우님 윤대희입니다. 구현하신 코드를 보았을 때, 카메라의 프레임마다 실시간으로 corner.png 와 부합되는 영역을 찾는 것으로 이해 됩니다. 만약, 카메라에서 불러오는 이미지(src)가 ◆가 여러 개 있는 이미지고, 템플릿 매칭 이미지(temp)가 ◆가 하나라면, 현재 코드에서는 좌측 상단의 ◆만 인식되는 것으로 이해됩니다. ◆ 위치를 하나의 이미지에서 여러 번 검색하는 방법은 다음과 같습니다. 1. 템플릿 매칭이 검출된 (minloc.X, minloc.Y, templit.Width, templit.Height) 좌표를 src 에 덮어씌운다음에 TemplitImage 메서드를 다시 반복하는 방법 2. 템플릿 매칭을 통해 반환된 calc 이미지에 최솟값을 갖는 location 뿐만아니라, 두 번째, 세 번째, 네 번째 ... 등까지 검색하는 방법입니다. 말씀하신 threshold는 최대 개수 제한치로 고려하시면 됩니다. - 2번 방법이 가장 효율적인 방법이지만, 두 번째, 세 번째, ... N 번째까지 찾으셔야 하기 때문에 세밀한 조건 설정이 필요합니다. 이 조건에 if문을 사용하시면 될 것 같습니다. 만약, 여러 문양을 비교하시려면 TemplitImage를 여러 번 실행하셔야 합니다. 감사합니다. 윤대희 드림.
- 0
- 4
- 218