본문 바로가기

IT 프로그래밍 관련/OpenCV10

OpenCV HSV 변경 HSV 는 Hue , 색상 Saturation 채도 Value (Brightness) 명도 를 뜻한다. OpenCV를 통하여 간단하게 HSV 변경이 가능하다. 먼저 원본 이미지를 cv2.cvtColor 함수를 통하여 BGR2HSV 로 변환. 이미지 변환을 위하여 float32로 변환을 해준뒤에 작업한다. 그 후에는 cv2.split 함수를 통하여 , 이미지를 hue, saturation, value , 3개의 채널로 손쉽게 나눌수 있다. 3개 채널의 값은 넘파이로, 0부터 255까지의 값만을 갖는다. 여기서 각 채널의 값을 넘파이 연산을 통하여 조절할 수 있다. 후에 3개의 채널을 다시 cv2.merge 함수를 통하여 합치고, uint8로 변경후에 이미지를 다시 불러오면 변경완료!!! 코드예제 1 2 3.. 2021. 5. 25.
OpenCV Persperctive 2 (마우스로 좌표 찍기) 이번에는 좌표를 수기로 적는 것이 아닌, 이미지를 보고 그 위에 원하는 곳을 클릭하여 그 클릭한 곳을 좌표로 설정하여 , 이미지를 확대해보려한다. 아래는 그 예제 코드이다. 먼저 마우스 관련 함수이다. 위의 함수를 이용하였다. 코드 예제 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 import cv2 import numpy as np from utils import get_four_points img_src = cv2.imread('data/images/book1.jpg') # 결과물 이미지 사이즈 dst_size = (400, 300, 3) # 결과의 이미지를 넣을 .. 2021. 4. 26.
OpenCV AffineTransform, homography(perspective)Transform AffinTransform 은 선의 평행은 유지되면서 이미지를 변환한다. 이동, 확대, 반전의 변환까지 포함하며 , 3개의 매치되는 점이 필요하다. ( 원본이미지의 3개의 점과 , 변화된 이미지의 3개의 점으로 변환 행렬을 구하고 이미지를 변환시킨다 ) 변환행렬 구하는 예제 각기 다른 두개의 세점좌표를 만들고 , cv2.getAffineTransform함수에 적용하였다. cv2.getAffineTransform 함수는 두개의 좌표로 변환행렬을 구해준다. AffineTransform 코드예제 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 import cv2 import numpy as np ## Affine Tra.. 2021. 4. 23.
OpenCV 이미지 Transformations ( rotation, translation ) 이미지의 기하학적 변형은 (Transformations) 사이즈 변경(Scaling), 위치변경(Translation), 회전(Rotaion) 등이 있다. 변환에 종류에는 강체변환(Ridid-Body) : 크기 및 각도가 보존 유사변환(Similarity) : 크기는 변하고 각도는 보존 선형변환(Linear) : Vector 공간에서의 이동. 이동변환은 제외. Affine : 선형변환과 이동변환까지 포함. 선의 수평성은 유지 Perspective : Affine변환에 수평성도 유지되지 않음. 원근변환 등이 있다. 크기가 보존되는 변환인 Rotation은 물체를 평면상의 한 점을 중심으로 𝜃 만큼 회전하는 변환이다. 회전은 시계 반대 방향으로 하며, 변환을 시킬 변환행렬이 필요하다. 변환행렬은 Rotati.. 2021. 4. 22.
728x90