- 이미지는 무엇입니까?
- 컴퓨터가 이미지를 저장하는 방법
- 기계가 이미지를 식별하기 어려운 이유
- OpenCV의 적용 및 사용
- Python 및 Anaconda로 OpenCV 설치
- OpenCV에서 이미지 열기 및 저장
- OpenCV의 그레이 스케일링 이미지
- 색 공간
- RGB 이미지의 개별 구성 요소 탐색
- 이미지를 개별 RGB 구성 요소로 변환
- 이미지의 히스토그램 표현
- OpenCV를 사용하여 이미지 및 모양 그리기
예술은 보는 방법이고 그들은 보는 것이 믿는 것이라고 말하지만 그 반대도 사실입니다. 믿는 것은 보는 것입니다. 비전의 선물없이이 세상에서 사는 것은 정말 상상하기 어렵습니다 – 우리의 눈, 그것이 얼마나 멋진 유아인지 눈을 떴을 때 우리는 세상을보고 우리 주변의 세상을 인식하고보기 시작했지만 시간이 지나면 똑같은 멋진 경험이 평범한 경험이됩니다. 그러나 기술이 발전함에 따라 우리는 기계도 그것을보고 이해할 수있는 직전에 있습니다. 현재로서는 얼굴로 휴대 전화 잠금을 해제하면 공상 과학이 아닌 것 같지만 머신 비전 개발 이야기는 20 년 이상 거슬러 올라갑니다.
이 분야의 초기 공식 단계는 1999 년 인텔 이니셔티브로 거슬러 올라갑니다. 모든 연구는 원래 C ++로 작성된 OPEN CV (오픈 소스 컴퓨터 비전) 하에서 공동 작업 되었으며 2006 년 첫 번째 주요 릴리스 1.0과 함께 두 번째로 진행되었습니다. 2009 년, 2015 년 3 위, 2018 년 4 위. 이제 OpenCV에는 C ++, Python 및 Java 인터페이스가 있으며 Windows, Linux, Mac OS, iOS 및 Android를 지원합니다. 따라서 Python 및 Linux 환경에서 Raspberry Pi에 쉽게 설치할 수 있습니다. 그리고 OpenCV와 연결된 카메라가있는 Raspberry Pi를 사용하여 얼굴 감지, 얼굴 잠금, 물체 추적, 자동차 번호판 감지, 홈 보안 시스템 등과 같은 많은 실시간 이미지 처리 애플리케이션을 만들 수 있습니다.
openCV를 사용한 이미지 처리 를 배우기 전에 이미지가 무엇인지, 인간과 기계가 이러한 이미지를 인식하는 방법을 아는 것이 중요합니다.
이미지는 무엇입니까?
이미지는 가시 광선 스펙트럼을 2 차원으로 표현한 것입니다. 가시 광선 스펙트럼은 적외선과 자외선 스펙트럼 사이에있는 전자기 스펙트럼의 일부일뿐입니다.
이미지 형성 방법:-빛이 물체에서 필름, 센서 또는 망막에 반사 될 때.
이것이 바로 우리의 눈이 작동하는 방식으로, 빛이 통과 할 수있는 작은 구멍을 남기는 가장 많은 빛의 지점을 차단하는 장벽을 사용하여 조리개 라고하며 초점이 많은 이미지를 형성하며 핀홀 카메라의 작업 모델입니다. 그러나 핀홀 카메라에는 동일한 양의 빛이 조리개로 들어 와서 형성된 필름이나 이미지에 적합하지 않은 문제가 있습니다. 또한 초점이 맞춰진 이미지를 얻을 수 없어 이미지에 초점을 맞출 수 없습니다. 필름을 앞뒤로 움직여야하지만 이것은 많은 상황에서 문제가됩니다.
또는 렌즈를 사용하여이 문제를 해결할 수 있으며 조리개 크기를 제어 할 수 있으며 사진에서는 f Stop 으로 알려져 있으며 일반적으로 f Stop 값을 낮추면 사진에서 더 좋습니다.
조리개 크기는 또한 사진에서 Bokeh 라고하는 멋진 피사계 심도에 들어가게 하여 이미지에 초점을 맞추는 동안 배경을 흐리게 할 수 있습니다.
컴퓨터가 이미지를 저장하는 방법
.png,.jpgG 등과 같은 다양한 이미지 형식에 대해 들어 보셨을 것입니다.이 모든 것은 아날로그 세계의 디지털 표현이며, 컴퓨터는 이미지를 디지털 코드로 변환하여 저장 한 다음 파일을 다시 이미지로 해석합니다. 디스플레이. 그러나 기본적으로 그들은 이미지를 저장하기 위해 공통 플랫폼을 사용하며 openCV도 마찬가지입니다.
OpenCV 는 이미지에 대해 기본적으로 RGB (빨간색, 녹색 및 파란색) 색상 공간을 사용하며, 각 픽셀 좌표 (x, y)에는 8 비트 형식 즉 (0-255, 2 8)의 강도 범위에 대한 3 개의 값이 포함 됩니다.
각 색상의 다른 강도를 혼합하면 전체 스펙트럼이 제공되므로 그림이나 예술에서이 세 가지 색상은 기본 색상으로 간주되고 다른 모든 색상은 보조 색상으로 간주됩니다. 대부분의 보조 색상은 기본 색상으로 형성 될 수 있기 때문입니다. 노란색과 마찬가지로 다음과 같은 값이 있습니다. 빨간색 – 255; 녹색 – 255; 파란색 – 0.
이제 이미지는 다차원 배열에 저장됩니다. 프로그래밍에서 배열은 일련의 객체 모음입니다. 그리고 여기서 우리는 'D'가 차원을 나타내는 1D, 2D 및 3D의 세 가지 유형의 배열을 다룹니다.
컬러 이미지는 3 차원 배열에 저장됩니다. 여기서 3 차원은 RGB 색상 (나중에 볼 것임)을 나타내며, 함께 이미지에 대해 서로 다른 강도의 픽셀을 형성하는 반면 흑백 이미지는 2 차원 배열에 저장됩니다. 또한 두 가지 유형의 흑백 이미지 그레이 스케일 및 이진 이미지가 있습니다.
그레이 스케일 이미지 는 2 차원 배열의 회색 음영에서 형성되는 반면 이진 이미지 는 검은 색 또는 흰색 픽셀입니다.
기계가 이미지를 식별하기 어려운 이유
컴퓨터 비전은 그 자체로 어려운 작업입니다. 기계에 시각, 인식 및 식별을 부여하는 것이 얼마나 어려운지 상상할 수 있습니다. 컴퓨터 비전을 어렵게 만드는 요인은 다음과 같습니다.
- 카메라 센서 및 렌즈 제한
- 관점 변화
- 조명 변경
- 스케일링
- 폐색
- 객체 클래스 변형
- 모호한 이미지 / 착시
OpenCV의 적용 및 사용
어려움에도 불구하고 Computer Vision에는 많은 성공 사례가 있습니다.
- 로봇 내비게이션 –자가 운전 자동차
- 얼굴 인식 및 인식
- 검색 엔진 이미지 검색
- 번호판 읽기
- 필기 인식
- Snapchat 및 얼굴 필터
- 물체 인식
- 스포츠에서 볼 및 선수 추적
- 그리고 더 많은!
Python 및 Anaconda로 OpenCV 설치
OpenCV는 C ++로 작성되었지만 C ++로 구현하기가 매우 어렵 기 때문에 Python과 같은 높은 수준의 언어로 구현하기로 선택 했으며 Python이 가장 쉬운 언어 중 하나이므로 Python 으로 OpenCV를 구현 하면 추가적인 이점이 있습니다. 초보자에게도 데이터 과학 및 기계 학습 응용 프로그램에 매우 강력하며 이미지를 numpy 배열에 저장하여 매우 강력한 작업을 매우 쉽게 수행 할 수 있습니다.
기본 프로그래밍은 Exposure to High School Level Math, 웹캠, Python 2.7 또는 3.6 (Anaconda 패키지 권장)에 유용합니다.
1 단계. Anaconda Python 패키지 다운로드 및 설치
www.anaconda.com/download로 이동하여 시스템 날씨에 따라 Windows, Linux 또는 Mac을 선택하고 64 비트 시스템 또는 32 비트 시스템에 대해 python 2.7 또는 python 3.7 버전을 선택할 수 있지만 지금은 대부분의 시스템은 64 비트입니다.
Python의 Anaconda 배포에는 Spyder studio, jupyter 노트북 및 anaconda prompt가 함께 제공되어 Python을 사용하기 매우 편리합니다. 예제를 수행하기 위해 spyder studio를 사용합니다.
python 2.7 또는 3.7 사이의 선택은 완전히 중립적이지만 예제 의 경우 python 3.7 이 python의 미래이고 python 2.7 form 2020을 인수 할 것이기 때문에 python 3.7을 사용할 것입니다. 대부분의 라이브러리도 python 3.7에서 개발 중입니다. 염두에두고 파이썬의 미래 측면. 또한 (2 / 5 = 2.5)와 같은 기본적인 수학 연산에 대한 예상 결과를 제공하는 반면, python 2.7은 2로 평가합니다. 또한 print는 python 3.7에서 함수로 처리됩니다 (print ("hello")). 그래서 프로그래머에게 실습을 제공합니다.
2 단계. OpenCV로 가상 플랫폼 만들기
Anaconda 프롬프트 와 여기에 업로드 된 YML 파일 을 사용하여 스파이더 용 가상 플랫폼을 생성하여 OpenCV 를 설치 합니다.
YML 파일을 사용하여 필요한 모든 패키지와 라이브러리를 설치하지만 추가 패키지를 설치하려면 해당 패키지의 명령을 실행하여 anaconda 프롬프트를 통해 쉽게 설치할 수 있습니다.
Windows 검색 아이콘으로 이동하여 anaconda 프롬프트 터미널을 찾으십시오. 방금 설치 한 anaconda 폴더에서 찾을 수 있습니다.
그런 다음 다운로드 한 YML 파일을 찾아야합니다. 여기에서 터미널의 디렉토리를 YML 파일이 다운로드 된 위치로 변경하거나 YML 파일을 아나콘다가 가장 많이 설치된 디렉토리에 복사 할 수 있습니다. YML 파일을 지정된 위치에 복사 한 후 C: \ 드라이브에있는 경우 프롬프트에서 다음 명령을 실행하십시오.
conda env create –f virtual_platform_windows.yml
내 시스템이 Windows 에서 실행 중이기 때문에 YML 파일과 명령은 창에 해당하지만 Windows를 각각 Linux 또는 Mac으로 대체하여 시스템에 따라 수정할 수 있습니다.
참고:- 패키지 추출시 오류가 발생하면 pytorch 및 numpy를 먼저 설치 한 다음 위의 명령을 실행하십시오.
이제 anaconda navigator를 찾으면“Applications on ___”의 드롭 다운 메뉴가 있고 거기에서 가상 환경을 선택한 다음 거기에서 Spyder studio 를 시작해야합니다.
이제 시작할 준비가되었습니다!
OpenCV에서 이미지 열기 및 저장
여기에서는 OpenCV에서 Python을 사용하기위한 몇 가지 기본 명령과 용어를 설명합니다. OpenCV imread, imshow 및 imwrite의 세 가지 기본 기능에 대해 배웁니다.
# 파이썬의 주석은 # 기호로 주어집니다
명령으로 Python에서 opencv 가져 오기
cv2 가져 오기
이미지 경로를 지정하는 'imread' 를 사용하여 이미지로드
이미지 = cv2.imread ('input.jpg')
이제 이미지가로드되고 파이썬에 이미지로 명명 된 변수로 저장됩니다.
이제 이미지 변수를 표시하기 위해 'imshow'를 사용 하고 imshow 함수의 첫 번째 매개 변수는 이미지 창에 표시되는 제목이며 이름을 문자열로 나타내려면 ('')에 입력해야합니다.
cv2.imshow ('hello world', 이미지)
waitkey를 사용하면 이미지 창이 열려있을 때 정보를 입력 할 수 있습니다. 공백으로두면 계속하기 전에 아무 키나 누를 때까지 기다립니다. 숫자 (0 제외)를 입력하여 창을 열어 두는 시간 (시간)을 지정할 수 있습니다. 여기에서 밀리 초 단위).
cv2.waitKey ()
'destroyAllWindows' 는 열려있는 모든 창을 닫습니다.이 창을 배치하지 않으면 프로그램이 중단됩니다.
cv2.destroyAllWindows ()
,이를 위해 numpy를 사용하고, numpy 는 대규모 다차원 배열 및 행렬에 대한 지원을 추가하기위한 Python 프로그래밍 용 라이브러리입니다.
import cv2 #importing numpy import numpy as np image = cv2.imread ('input.jpg') cv2.imshow ('hello_world', image) #shape 함수는 배열 의 차원 을 볼 때 매우 유용 합니다. 이미지의 차원을 제공하는 튜플을 반환합니다. print (image.shape) cv2.waitKey () cv2.destroyAllWindows ()
콘솔 출력 -(183, 275, 3), 이미지의 2 차원은 높이가 183 픽셀이고 너비가 275 픽셀이며 3은이 이미지를 만드는 세 가지 다른 구성 요소 (R, G, B)가 있음을 의미합니다 (컬러 이미지는 3 차원 배열에 저장됩니다).
print ('이미지 높이:', (image.shape, 'pixels')) print ('이미지 너비:', (image.shape, 'pixels'))
콘솔 출력- 이미지 높이: (183, '픽셀')
이미지 너비: (275, '픽셀')
OpenCV에서 편집 된 이미지 저장
저장할 파일 이름과 이미지를 지정하기 위해 'imwrite' 를 사용 합니다.
cv2.imwrite ('output.jpg', 이미지) cv2.imwrite ('output.png', 이미지)
첫 번째 인수는 저장하려는 파일의 이름입니다. {파일을 읽거나 저장하려면 ('')을 사용하여 문자열로 표시}하고 두 번째 인수는 파일 이름입니다.
OpenCV를 사용하면 이미지를 다른 형식으로 저장할 수 있습니다.
OpenCV의 그레이 스케일링 이미지
그레이 스케일링 은 이미지가 풀 컬러에서 회색 음영 (흑백)으로 변환되는 과정입니다.
opencv에서 많은 기능은 처리 전에 이미지를 그레이 스케일합니다. 이는 이미지를 단순화하고 거의 노이즈 감소로 작용하고 이미지에 정보가 적기 때문에 처리 시간을 증가시키기 때문에 수행됩니다 (회색조 이미지는 2 차원 배열에 저장 됨).
import cv2 # 입력 이미지로드 image = cv2.imread ('input.jpg') cv2.imshow ('original', image) cv2.waitKey () # cvtcolor를 사용하여 그레이 스케일로 변환 gray_image = cv2.cvtColor (image, cv2.COLOR_BGR2GRAY) cv2.imshow ('grayscale', gray_image) cv2.waitKey () cv2.destroyALLWindows ()
이미지를 그레이 스케일로 변환하는 더 간단한 방법 은 이미지 이름 옆 에 imread 함수 의 인수 0을 추가하는 것입니다.
import cv2 grey_image = cv2.imread ('input.jpg', 0) cv2.imshow ('grayscale', grey_image) cv2.waitKey () cv2.destroyAllWindows ()
import cv2 import numpy as np image = cv2.imread ('input.jpg') print (image.shape) cv2.imshow ('original', image) cv2.waitKey () gray_image = cv2.cvtColor (image, cv2.COLOR_BGR2GRAY) cv2.imshow ('grayscale', gray_image) print (gray_image.shape) cv2.waitKey () cv2.destroyALLWindows ()
콘솔 출력:-(183, 275, 3) – 컬러 이미지 용
(183, 275) – 그레이 스케일 이미지 용
따라서 컬러 이미지는 3 차원 배열로 표시되고 회색조 이미지는 2 차원 배열로 표시됨을 명확하게 보여줍니다.
색 공간
색 공간은 이미지가 저장되는 방식입니다. RGB, HSV, CMYK는 서로 다른 색상 공간 이며 색상을 표현하는 간단한 방법입니다.
RGB – 빨강, 녹색 및 파랑.
HSV – 색조, 채도 및 값.
그리고 CMYK 는 일반적으로 잉크젯 프린터에 사용됩니다.
RGB 또는 BGR 색 공간
OpenCV의 기본 색상 공간은 RGB입니다. RGB는 서로 다른 강도 / 밝기의 파란색, 녹색 및 빨간색을 결합하여 색상을 생성하는 추가 색상 모델입니다. OpenCV에서는 8 비트 색상 심도를 사용합니다.
-빨간색 (0-255)
-파란색 (0-255)
-녹색 (0-255)
그러나 OpenCV는 실제로 색상을 BGR 형식으로 저장합니다.
재미있는 사실:-부호없는 32 비트 정수가 메모리에 저장되는 방식으로 인해 컴퓨터에서 BGR 순서를 사용하지만 여전히 RGB로 저장됩니다. 색상을 나타내는 정수 예:-0X00BBGGRR은 0XRRGGBB로 저장됩니다.
HSV 색 공간HSV (Hue, Saturation & value / Brightness)는 인간이 인식하는 색상을 표현하려는 색 공간입니다. RGB 색상 포인트의 원통형 표현으로 색상 정보를 저장합니다.
색조 – 색상 값 (0-179)
채도 – 색상의 선명도 (0-255)
값 – 밝기 또는 강도 (0-255)
HSV 색상 공간 형식은 색상 분할에 유용합니다. RGB에서 특정 색상을 필터링하는 것은 쉽지 않지만 HSV를 사용하면 색상 범위를 설정하여 우리가 인식하는 특정 색상을 필터링하는 것이 훨씬 쉽습니다.
Hue는 HSV의 색상을 나타내며 색상 값은 360이 아닌 0 – 180 범위이므로 전체 원을 완성하지 못하므로 표준과 다르게 매핑됩니다.
색상 범위 필터
- 빨간색 – (165-15)
- 녹색 – (45-75)
- 파란색 – (90-120)
이미지가 RGB (빨강, 녹색 및 파랑) 색상 공간에 저장된다는 것을 알고 있으므로 OpenCV는 우리에게 똑같이 보여줍니다. 그러나 opencv의 RGB 형식에 대해 기억해야 할 첫 번째 사항은 실제로 BGR이라는 것입니다. 이미지 모양.
import cv2 import numpy as np image = cv2.imread ('input.jpg') # B, G, R 처음 0,0 픽셀 값 B, G, R = image print (B, G, R) print (image.shape) # 이제 이것을 그레이 스케일 이미지에 적용하면 gray_img = cv2.cvtColor (image, cv2.COLOR_BGR2GRAY) print (gray_img.shape) # 10,50 픽셀에 대한 gray_image 픽셀 값 print (gray_img)
콘솔 출력: 출력 (B, G, R) - (6) 11 10
인쇄 (이미지. 모양) - (183, 275, 3)
print (gray_img.shape) -(183, 275)
인쇄 (gray_img) -69
이제 그레이 스케일 이미지에는 2 차원 만 있습니다 . 컬러 이미지가 3 차원으로 저장되어 있다는 것을 기억하기 때문입니다. 세 번째 차원은 (R, G, B) 이고 그레이 스케일에서는 2 차원 만 존재합니다., B)는없고 특정 픽셀 위치에 대해 단일 값만 얻는 반면 컬러 이미지에서는 세 개의 값을 얻습니다.
또 다른 유용한 색 공간은 HSV입니다.
import cv2 image = cv2.imread ('input.jpg') hsv_image = cv2.cvtColor (image, cv2.COLOR_BGR2HSV) cv2.imshow ('HSV image', hsv_image) cv2.imshow ('Hue channel', hsv_image) cv2 . imshow ('saturation channel', hsv_image) cv2.imshow ('value channel', hsv_image) cv2.waitKey () cv2.destroyAllWindows ()
코드를 실행하면 3 개는 개별 채널이고 1 개는 HSV 이미지가 결합 된 4 개의 이미지를 볼 수 있습니다.
색조 채널 이미지는 값이 0에서 180까지만 변하기 때문에 매우 어둡습니다.
또한 imshow 함수는 RGB 또는 BGR 이미지를 표시하려고하지만 HSV 변환이이를 겹칩니다.
또한 값 채널은 밝기로 인해 이미지의 회색조와 유사합니다.
RGB 이미지의 개별 구성 요소 탐색
import cv2 image = cv2.imread ('input.jpg') #opencv 의 분할 함수는 각 색상 인덱스에서 이미지를 분할합니다. B, G, R = cv2.split (image) cv2.imshow ("Red", R) cv2.imshow ("Green", G) cv2.imshow ("Blue", B) # 개별 색상 구성 요소를 병합 하여 원본 이미지 만들기 merged = cv2.merge () cv2.imshow ("merged", merged) # 병합 된 파란색을 증폭 = cv2.merge () cv2.imshow ("merged with blue amplify", merged) # 개별 색상 구성 요소의 모양을 나타냅니다. # RGB 구성 요소의 세 번째 요소가 개별적으로 표현되기 때문에 출력은 높이와 너비가 2 차원 일뿐입니다.print (B.shape) print (R.모양) print (G.shape) cv2.waitKey (0) cv2.destroyAllWindows ()
콘솔 출력: shape 함수의 #dimensions of image
(183, 275)
(183, 275)
(183, 275)
이미지를 개별 RGB 구성 요소로 변환
아래 코드에서 우리는 이미지 HxW의 차원으로 0 행렬을 만들었습니다. 0은 0으로 채워진 배열을 반환하지만 동일한 차원을 사용합니다.
모양 기능은 이미지의 차원을 볼 때 매우 유용하며 여기에서 모양 기능을 분할했습니다. 따라서 모양 은 지정된 지점까지 모든 것을 잡을 것입니다. 즉, 세 번째는 이미지의 RGB 구성 요소를 나타 내기 때문에 이미지의 높이와 너비가되는 두 번째 지정된 지점까지 여기에서는 필요하지 않습니다.
import cv2 import numpy as np image = cv2.imread ('input.jpg') B, G, R = cv2.split (image) zeros = np.zeros (image.shape, dtype = "uint8") cv2.imshow ("RED", cv2.merge ()) cv2.imshow ("Green", cv2.merge ()) cv2.imshow ("Blue", cv2.merge ()) cv2.waitKey (0) cv2.destroyAllWindows ()
이미지의 히스토그램 표현
이미지의 히스토그램 표현은 이미지 의 구성 요소를 시각화하는 방법입니다.
다음 코드를 사용하면 결합 된 개별 색상 구성 요소의 색상 히스토그램을 통해 이미지를 분석 할 수 있습니다.
import cv2 import numpy as np # 히스토그램 플롯을 만들려면 matplotlib를 가져와야합니다. import matplotlib.pyplot as plt image = cv2.imread ('input.jpg') histogram = cv2.calcHist (,, None,,) #we plot a 히스토그램, ravel ()은 이미지 배열을 평평하게합니다. plt.hist (image.ravel (), 256,) plt.show () # 별도의 색상 채널보기 color = ('b', 'g', 'r') # 알아 색상을 분리하고 i에 대한 히스토그램 에 각각 플로팅하고 , 열거 (색상)의 col: histogram2 = cv2.calcHist (,, None,,) plt.plot (histogram2, color = col) plt.xlim () plt.show ()
각각의 개별 매개 변수와 함께 calcHist 함수를 이해합시다.
cv2.calcHist (이미지, 채널, 마스크, histsize , 범위)
Images: uint 8 또는 float 32 유형의 소스 이미지입니다. 대괄호, 즉 ""로 지정해야합니다. 이는 opencv의 이미지가 배열 형식의 데이터이기 때문에 두 번째 수준 배열을 나타냅니다.
채널: 대괄호로도 제공됩니다. 히스토그램을 계산하는 채널의 인덱스입니다. 예를 들어 입력이 그레이 스케일 이미지 인 경우 값은, 전달할 수있는 컬러 이미지의 경우 또는 각각 파란색, 녹색 및 빨간색 채널의 히스토그램을 계산합니다.
마스크: 마스크 이미지. 전체 이미지의 히스토그램을 찾기 위해 "없음"으로 지정됩니다. 하지만 이미지의 특정 영역에 대한 히스토그램을 찾으려면 해당 영역에 대한 마스크 이미지를 만들어 마스크로 제공해야합니다.
Histsize: BIN 개수를 나타냅니다. 우리가 통과하는 풀 스케일을 위해 대괄호 안에 주어져야합니다.
범위: 이것은 우리의 범위이며 일반적으로
OpenCV를 사용하여 이미지 및 모양 그리기
다음은 OpenCV에서 선, 직사각형, 다각형, 원 등을 그리는 몇 가지 예 입니다.
import cv2 import numpy as np # 검은 정사각형 이미지 만들기 = np.zeros ((512,512,3), np.uint8) # 흑백으로도 만들 수 있지만 변경 사항은 없습니다 image_bw = np.zeros ((512,512), np.uint8) cv2.imshow ("검은 직사각형 (색상)", 이미지) cv2.imshow ("검은 직사각형 (흑백)", image_bw)
선
검은 사각형 위에 선 # 만들기 #의 cv2.line (화상 좌표를 시작할 좌표를 종료 색 두께) 두께 5 개 화소의 대각선 #drawing 화상 np.zeros = ((512,512,3) np.uint8) CV2.line (image, (0,0), (511,511), (255,127,0), 5) cv2.imshow ("blue line", image)
직사각형
검은 사각형 위에 직사각형 # 만들기 #의 cv2.rectangle (화상 좌표를 시작 좌표, 컬러 종료 두께) 두께 5 개 화소의 직사각형 #drawing 화상 np.zeros = ((512,512,3) np.uint8) CV2.rectangle (image, (30,50), (100,150), (255,127,0), 5) cv2.imshow ("rectangle", image)
# 검은 정사각형 위에 원 만들기 # cv2.circle (image, center, radius, color, fill) image = np.zeros ((512,512,3), np.uint8) cv2.circle (image, (100,100), (50), (255,127,0),-1) cv2.imshow ("circle", image)
#creating a polygon image = np.zeros ((512,512,3), np.uint8) #lets define four points pts = np.array (,,,], np.int32) # 이제 우리가 요구하는 형태로 포인트의 형태를 바꿀 수 있습니다. polylines pts = pts.reshape ((-1,1,2)) cv2.polylines (image,, True, (0,255,255), 3) cv2.imshow ("polygon", image)
#opencv를 사용하여 텍스트 입력 # cv2.putText (image, 'text to display', bootom left start point, font, font size, color, thickness) image = np.zeros ((512,512,3), np.uint8) cv2 . putText (image, "hello world", (75,290), cv2.FONT_HERSHEY_COMPLEX, 2, (100,170,0), 3) cv2.imshow ("hello world", image) cv2.waitKey (0) cv2.destroyAllWindows ()
Computer Vision 및 OpenCV는 다루어야 할 매우 방대한 주제이지만이 가이드는 OpenCV 및 이미지 처리를 배우기위한 좋은 출발점이 될 것입니다.