본문 바로가기

opencv12

이미지 회전 회전시(반시계 방향)의 변환 매트릭스는 아래와 같다.이 매트릭스가 되는 이유는 아래와 같이 삼각함수로 설명이 가능하다.x좌표(1, 0)를 θ만큼 회전을 시키면 삼각함수 cosθ = x' / 1 과 sinθ = x' / 1  에 의해 x' = cosθ, sinθ 가 된다.y좌표(0, 1)를 θ만큼 회전을 시키면 삼각함수 sinθ = y' / 1(음수값이므로 -) 과 cosθ = y' / 1  에 의해 y' = -sinθ, cosθ 가 된다.여기에 회전후 좌표 이동까지 고려한다면 아래와 같다. 이에 상응하는 OpenCV 함수는 아래와 같고  리턴하는 매트릭스는 위의 2 x 3 의 형태가 된다. 위의 매트릭스를 이미지에 적용하는 함수는 warpAffine() 이다. 1. 일반 회전 cv::Mat image =.. 2023. 11. 27.
스캔문서의 기울기 알아보기 - 2 스캔문서의 기울기 알아보기 에서 라인을 통해 기울기를 알아 보았다. 이번 칼럼에서는 단락을 통해 기울기를 알아보는 방법을 살펴보자. 그레이 변환 ▶ B/W 변환 ▶ 문자를 흰색으로 변환 ▶ 문자(흰픽셀) 좌표만 Point배열에 저장 ▶ minAreaRect 함수를 통해 각도 확인 ▶ 각도 보정 이번에 사용할 이미지는 지난번 이미지에서 단락 부분만 떼어 내었다. 만약 전체 이미지를 사용하고자 한다면 단락간의 공간을 찾아내어 한 단락만 떼어내는 로직이 필요할 것이다. 1. 그레이 변환, B/W 변환, 문자를 흰색으로 변환 cv::Mat image = cv::imread("d:\\image.png"); cv::cvtColor(image, image, cv::COLOR_BGR2GRAY); cv::threshol.. 2023. 11. 27.
스캔문서의 기울기 알아보기 기울어진 스캔문서 이미지(칼라)가 아래와 같이 있을 경우, 문자인식등을 위해서는 기울기 보정을 해주어야 한다. 이번 기울기 보정의 흐름은 아래와 같다. 그레이 변환 ▶ B/W 변환 ▶ 문자를 흰색으로 변환 ▶ 문자를 두텁게 ▶ 라인을 검출 ▶ 라인의 기울기 평균 1. 그레이 변환, B/W 변환 cv::cvtColor(image, image, cv::COLOR_BGR2GRAY); cv::threshold(image, image, 100, 255, cv::THRESH_BINARY); 노이즈가 없는 샘플을 사용했기 때문에 위와 같이 간단한 Threshold함수를 사용하였다. 질이 나쁜 이미지를 사용한다면 노이즈제거, otsu 나 adaptive threshold 함수등을 사용해야 할 것 이다. 2. 문자를 흰.. 2023. 11. 26.
(opencv) 이미지 저장형태, 액서스 1. opencv에 있어서 이미지는 어떻게 저장되어 있을까?프로그램이 실행될 때 사용되는 메모리는 여러 영역으로 구분됩니다. 대표적으로, 일시적으로 사용하는 로컬 변수는 스택 메모리를 사용하며, new 연산자를 통해 동적으로 할당되는 메모리는 힙 메모리를 사용합니다. 스택 메모리는 일반적으로 1MB 정도로 제한되어 있어 대용량 데이터(예: 이미지)를 저장하기에는 적합하지 않으므로, 이러한 데이터는 힙 메모리에 저장해야 합니다. 이를 통해 스택 오버플로우 에러를 방지할 수 있습니다.OpenCV에는 Mat이라는 클래스가 있습니다. 이 클래스는 이미지의 정보(예: 너비, 높이, 타입 등)와 이미지 데이터가 저장된 힙 메모리의 주소를 저장하는 변수들을 포함하고 있습니다. Mat 변수를 단순히 선언할 경우, 이미.. 2023. 11. 25.