본문 바로가기

# 미사용/OpenCV

(15)
# 미사용/OpenCV [OpenCV] 이진화 (1) 응용 : 로고넣기 샘플 이미지 [출처] https://hdqwalls.com/ 간단 요약로고 넣는 방법로고 형태의 흑백사진을 얻는다.로고 형태로 이미지에 흰색 구멍을 뚫는다.흰색 구멍에 로고를 채워넣는다. 로고 형태의 흑백사진 얻기필요한 변수들 //! 필요한 변수들 Mat logo_white_bg_ch3; //! 로고 3채널 이미지 (BGR) Mat logo_white_bg_ch3_rgb[3]; //! 로고 3채널 이미지의 각 채널. Mat logo_mask_black_bg_c1; //! 로고 검은색 배경 마스크 (BGR) Mat logo_mask_white_bg_c1; //! 로고 흰색 배경 마스크 (BGR) Mat logo_mask_black_bg_c3; //! 로고 검은색 배경 마스크 (Grayscale) Mat l..

2019. 11. 3. 00:32

# 미사용/OpenCV [OpenCV] 이진화 (1) BINARY, BINARY_INV 이진화 (Binarization)기준값 (=문턱, threshold)을 정한 뒤.문턱보다 작은 값은 0으로, 큰 값은 1로 변환하는 것.0~255 범위를 두가지 값으로 바꾸는 작업이므로 이진화라고 부른다. figure 1 )다음은 정수배열을 이진화하는 작업을 보여준다.그레이스케일 (= 1채널 영상)은 양수배열과 같으므로, 다음 그림처럼 동작한다. figure 2)다음은 RGB (= 3채널 영상)의 이진화 작업을 보여준다.그레이스케일(=RGB값의 평균)로 변환한 뒤에 이진화를 수행한다. 이미지 프로세싱은 검정 또는 흰색이므로,실제 값은 0 또는 255로 변환된다. [출처] https://poorman.tistory.com/143 왜 이진화가 필요한가?빠른 영상처리3채널 영상은 한 픽셀당 (255^3)개의 ..

2019. 11. 1. 16:29

# 미사용/OpenCV [OpenCV] 행렬의 비트연산 행렬의 비트연산행렬에 사용할 수 있는 기본적인 비트연산의 종류는 다음과 같다.bitwise_orbitwise_andbitwise_xorbitwise_not 멀티채널 행렬의 경우에는 각 채널별로 연산이 진행되며.모든 비트연산에는 마스크 기능이 포함되어 있다. 샘플 이미지code) //! 캔버스의 크기와 색상지정. int width = 300; int height = 200; Size size(width, height); Scalar blue = Scalar(0xd4, 0x34, 0x48); Scalar white = Scalar(0xff, 0xff, 0xff); //! 왼쪽 원 Mat left = Mat(size, CV_8UC3, blue); circle( left, //! 원을 그릴 이미지 행렬 Poin..

2019. 11. 1. 02:46

# 미사용/OpenCV [OpenCV] 행렬의 산술연산 행렬의 산술연산 종류마스킹 산술연산마스킹 덧셈마스킹 뺄셈마스크가 1인 위치만 산술연산을 수행한다.마스크가 0인 위치는 0으로 설정된다. 스케일 산술연산스케일 덧셈스케일 곱셈스케일 나눗셈 첫번째 피연산자를 scale만큼 곱하고 산술연산을 수행한다. 가중치 산술연산가중치 덧셈각 피연산자에 각각 alpha, beta만큼 곱하고 산술연산을 수행한다.그 뒤에 gamma도 더한다. 마스킹 산술연산def ) /** * 마스크를 씌우고 산술연산을 수행한다. * * @param src1 첫번째 피연산자 * @param src2 두번째 피연산자 * @param dest 결과가 저장될 곳 * @param mask 마스크 행렬 */ void add(Mat src1, Mat src2, Mat dest, Mat mask); vo..

2019. 10. 31. 16:46

# 미사용/OpenCV [OpenCV] 채널의 분리, 병합, 혼합 2020-05-12 수정됨 채널관련 기본 영상처리 함수 OpenCV는 다음과 같은 기본 채널연산을 제공합니다. 채널 분리 (spilt) 채널 병합 (merge) 채널 혼합 (mix) 채널 분리 N채널 영상을 1채널 영상 N개로 분리합니다. 함수 정의 /** * src를 1채널 단위로 분리한다. * * @param src 분리할 영상. * @param dest 분리된 채널들이 저장될 배열. */ void spilt(const Mat &src, Mat dest[]); 예제 //! 테스트 3채널 영상. Mat src = Mat(Size(2, 2), CV_8SC3, Scalar(0, 1, 2)); /* * [(0, 1, 2), (0, 1, 2); * (0, 1, 2), (0, 1, 2)] */ //! 각 채널을..

2019. 10. 31. 01:05

# 미사용/OpenCV [OpenCV] 행렬의 대칭, 전치, 반복 샘플 이미지 (영상) Banner vector created by freepik - www.freepik.com 기본 영상처리 함수 (1)N 채널 영상에 대해 기본적인 연산을 제공한다.대칭전치반복 대칭def ) /** * src를 axis방향으로 대칭시켜 dest에 붙여넣는다. * * @param src 대칭시킬 행렬. * @param dest 결과가 저장될 행렬. * @param axis 축을 정의하는 상수. * 0 : x축 대칭 * 1 : y축 대칭 * -1 : xy축 대칭 */ void fiip(InputArray src, OutputArray dest, int axis); example 1)1채널 영상을 대칭. //! 테스트 행렬. Mat mat = Mat(Size(5, 5), CV_32SC1);..

2019. 10. 30. 16:00

# 미사용/OpenCV [OpenCV] 기본도형 그리기 기본 도형기본 도형의 종류직선사각형원타원텍스트 선의 종류 (LINE_TYPE)기본 도형을 이루는 선의 종류 FILLED 꽉찬 도형 LINE_4 4방향 연결선 LINE_8 8방향 연결선 (기본값) LINE_AA 안티 에일리싱이 적용된 선 figure ) 직선 그리기 //! 기본 색상 및 하얀색 이미지 생성. const Scalar black(0, 0, 0); const Scalar white(255, 255, 255); const string title = "canvas"; Mat image = Mat(Size(500, 250), CV_8UC3, white); //! 직선 그리기. Point srt(10, 10); Point end(150, 150); Scalar color = black; int thic..

2019. 10. 29. 20:31

# 미사용/OpenCV [OpenCV] 윈도우 및 이벤트 관리 윈도우 창 관리 Mat img = imread("./opencv_logo.png", IMREAD_UNCHANGED); CV_Assert(img.data); //! window_name이라는 이름으로 윈도우 생성. //! 윈도우의 크기는 후에 지정된 행렬의 크기에 따라 변경됨. namedWindow("window_name", WINDOW_AUTOSIZE); waitKey(); //! window_name2에 img 표시. //! 해당 namedWindow가 없다면 직접 생성함. imshow("window_name2", img); waitKey(); //! 해당 윈도우 창을 (x, y)좌표로 이동. moveWindow("window_name2", 50, 50); waitKey(); //! 해당 윈도우 창의 ..

2019. 10. 29. 18:53