이미지 binary

이미지
영상 binary, 이진화 처리 입력되는 사진이 bgr 사진이면 gray로 바꿔주는 작업이 필요하다. cv2.cvtColor() 함수를 이용하여 작업을 진행하여 준다. 첫 번째 threshold()함수는 일반적인 이진화이다. 첫번째 인자는 입력할 이미지, 두번째는 기준점, 세번째는 기준점을 넘을 시 바꿀 값을 설정한다. 두 번째 adaptiveThreshold() 함수는 첫번째 함수 보다 원형의 이미지를 살리면서 이진화를 실행한다. 첫번째 인자는 똑같이 입력할 이미지, 두번째는 기준점 넘을 시 바꾸어줄 값, 세번째는 적응형 이진화 타입, 네번째는 이진화 타입, 다섯번째는 임계값 계산시 함께 볼 픽셀의 범위, 여섯번째는 평균 값에서 뺄 값이다. qt designer를 이용하였다. combo box를 이용하여 이진화 종류를 선택하게 하였으며, slider를 이용해 기준점을 설정 할 수 있게 하였다.

이미지 blur 처리

이미지
이미지를 blur 처리하는데 대략 4가지의 방법이 있다. 1. cv2.blur() : 평균 블러 처리 방법이다. 입력되는 이미지의 뒤에 있는 커널의 수가 커질수록 흐려짐이 강하다. 2. cv2.GaussianBlur() : 가우시안 블러는 평균 블러보다 edge를 남겨둔 채로 blur 처리를 하기에 노이즈 제거에 사용된다. 3. cv2.meianBlur() : 무작위 노이즈를 제거하는데 효과적이나 edge가 모호해질 수 있다. 4. cv2.bilateralFilter() : 가우시안과 비슷하게 edge를 남기고 blur 처리에 쓰인다. 위의 comboBox를 이용해 효과를 선택하며, 아래의 slider를 이용하여 적용될 커널의 수를 조절할 수 있게 하였다.

이미지에서 edge 검출

이미지
opencv와 python, qt를 사용하였다. cv2.cvtColor()를 이용해 입력된 이미지의 색상을 변경하여 주었다. cv2.COLOR_BGR2GRAY은 bgr에서 gray로 변경되는 옵션이며, 다양한 옵션이 존재한다. 이미지 입력은 사진 그리고 videoCapture() 함수를 이용한 비디오와 웹캠의 이미지도 가능하다. cv2.Sobel()을 이용하여 수직선 방향의 edge를 검출한다. ksize는 커널 갯수 이며 숫자가 클수록 선의 굵기가 굵어진다. designer를 이용하여 slider와 연동되게 하였다. cv2.convertScaleAbs()를 통해 sobelx의 값에 절대값을 적용하고 범위를 8bit unsigned int로 변경한다. 이후 widget에 출력을 하여 주면 edge가 검출된 이미지가 출력이 된다. https://docs.opencv.org/3.4.3/d5/d0f/tutorial_py_gradients.html  참고

PyQt FileDialog

이미지
FileDialog를 사용하기 위해 가장 위에 import하여 선언하여 준다. log = QFileDialog()를 선언하면서 사용할 준비를 한다. 경로만 가져오는 방법도 있으며, 이름만 가져오기도 하며, 하나 또는 그 이상의 이름을 가져 오는 방법도 가능하다. 현재는 파일 하나의 이름만 가져오면 되기에 getOpenFileName()함수를 사용하였다. (다른 함수에 대한 설명은  https://doc.qt.io/qt-5/qfiledialog.html#static-public-members  에서 볼 수 있다.) getOpenFileName에서 차례로 1. self는Parent 설정 2. 'Get Model'은 Dialog가 열렸을 시 창에 제목을 붙여주며 3. os.getcwd()는 시작될 경로(os.getcwd()를 사용하려면 os를 import 해 줘야한다, sys를 사용하는 방법도 있다.) 4. 가져올 파일들의 확장자를 정의 할 수 있다. "video (*.mp4);;All (*.*)" 와 같이 두게 이상의 목록을 만들고 싶은면 세미콜론(;) 2개를 이용하면 된다. (다이얼로그를 연 모습) (qt designer를 이용해 만든 경로를 표시할 LineEdit과 ToolButton)

yolo에서 라벨링으로 생성한 txt 파일을 tensorflow에 맞는 xml 파일로 변환하기

이미지
우선 윈도우와 리눅스에서 아나콘다로 실행하여 본 결과 모두 정상 작동을 한다. 경로 작성시 window에서 아래와 같은 오류가 표시 될 시 경로 앞에 r을 붙여주면 된다. ex) IMG_PATH = r "D:\VisualStudio\WorkSpace\data\img-GBS-IMG" txt 파일에서 xml 파일로 변환시에 xml파일 이름 앞에 경로가 추가되는 오류는 고쳤으나 저장 경로가 제대로 지정되지 않는 오류는 아직 수정하지 못 하였다. 그러니 따로 디렉토리를 생성하고 그 안에서 이 코드를 돌리는 것이 나을 것이다. 코드에서 IMG_PATH와 txt_folder는 각각 .jpg, .txt 파일만 넣어 두는 것이 나을 것이다. 한 폴더 안에 jpg, txt 파일이 같이 있으면 파일 정보를 읽어 오는데 오류가 발생할 것이다.(능력자 분은 고쳐서 사용 하시면 됩니다...) from lxml import etree from PIL import Image import csv import os import io IMG_PATH = r"D:\VisualStudio\WorkSpace\data\img-GBS-IMG" fw = os.listdir(IMG_PATH) #path of save xml file save_path = r"D:\VisualStudio\WorkSpace\data\annotations" # txt_folder is txt file root that using darknet rectbox txt_folder = r"D:\VisualStudio\WorkSpace\data\img-GBS-TXT" #edit your label set labels = ['green','brown','sugar'] def csvread(fn):     with open(fn, 'r') as cs...

yolo 이용한 winform 작성

이미지
➢ 실행시 기본 화면 ➢ object detect 실행시 화면 ➢ marking open 실행시 나타나는 화면과 차례로 training과 selftrainig 선택시 나타나는 화면

winform에서 dialog 만들기

이미지
https://mirwebma.tistory.com/121 참고