내가 까먹을까봐 만든 블로그

전체 글

Data Science/Computer Vision

[OpenCV] [Python] 이미지 회전(Rotate) 변환과 Affine(어파인 or 아핀)

기하학적(Geometric) 변환 기하학적(Geometric) 변환에서 어파인(Affine) 변환과 원근(or 투시, Perspective) 변환 그리고 리매핑(Remapping)이 있다. 여기서 어파인 변환과 투시 변환은 아래와 같은 차이가 있다. 어파인 변환 - 변환 결과가 평행사변형 형태 - 이미지의 끝 점 3개의 이전 위치와 변환 후의 위치를 알면 이동 관계를 알 수 있음 => 평행 사변형에서 점 3개를 알면 나머지 점의 위치 또한 알 수 있기 때문에 점 3개 투시 변환 (Perspective Transformation) - 어파인 변환보다 자유도가 높은 변환 - 이미지의 끝 점 4개의 이전위치와 변환 후의 위치를 알면 이동 관계를 알 수 있음 => 평행 사변형이 아닌 좀 더 자유로운 사각형이므로..

Languages/JavaScript

[React] import할 때 {}(중괄호)의 의미

react-native를 하며 라이브러리에서 특정 메소드 또는 함수를 import 할 때 {}(중괄호) 안에 적어줄 때도 있고 그냥 메소드명만 표기할 때가 있는데, 예를 들어 아래와 같은 경우가 있다. import React, { useState, useEffect } from 'react'; React는 중괄호 없이 적었고, 상태 관리를 위한 Hook인 useState와 컴포넌트 랜더링 시 원하는 작업을 실행시키도록 도와주는 Hook인 useEffect는 중괄호 안에 메소드를 적었다. 이는 'react'라는 패키지 내부에서 어떻게 해당 메소드를 export 하는지에 따라 import시 표기하는 방법이 달라진다. 만약 아래와 같은 contextAPI가 있다고 가정한다. import React, { cre..

Languages/JavaScript

[React Native Error] Too many re-renders. React limits the number of renders to prevent an infinite loop.

개발 중이던 앱은 푸시 알림을 받아 웹뷰를 보여주는 기능을 수행한다. 이때 푸시 알림은 가장 상위단에서 수신하고 url 정보 갱신한 후 하위 Home까지 props로 전달하고, 최종적으로 Home.js에서 useState를 이용해 url 변수를 갱신하여 rerender하는 구조를 계획하였다. 하지만 useState의 남용에 의해 아래 에러가 발생하였다. "Too many re-renders. React limits the number of renders to prevent an infinite loop." 해당 에러가 발생한 구조는 아래와 같다. // App.js import React, { useEffect, useState } from 'react'; import * as Notifications f..

Data Science/Computer Vision

[OpenCV] [Python] 이미지 이진화(Binarization)와 Thresholding (임계처리) + 오츠(Otsu)

이미지 이진화(Binarization) 이미지 이진화(Binarization)는 이미지 분리(Image Segmentation)를 하는 가장 간단한 방법으로 이미지 내의 물체와 배경을 0과 1, 또는 그 반대로, 두 값만으로 픽셀값을 재설정하는 것이다. 이는 3채널의 RGB값을 가진 이미지가 아닌 1채널을 가지고 있는 이진화된 이미지 데이터에만 적용 가능하다. 즉, 픽셀 값을 0~255까지 가진 흑백 사진으로 변경하는 것이다. 이 이진화 작업을 수행한 후 Thresholding을 통해 임계값(Thresh) 기준 이상의 값을 255, 미만의 값은 0으로 바꾸는 것이 가능하다. Thresholding 우선 openCV 라이브러리를 사용한다면 다음의 함수를 통해 간단하게 Thresholding을 수행할 수 있..

Computer Science/IoT

[Protocol] MQTT Protocol이란?

MQTT(메시지 큐잉 텔레메트리 트랜스포트, Message Queuing Telemetry Transport)는 ISO 표준 Publish(발행)-Subscribe(구독) 기반의 메시징 프로토콜이다. MQTT는 TCP/IP 프로토콜 위에서 동작하는데 이는 Bluetooth나 Zigbee와 같이 다른 통신 모듈이 필요한 것이 아닌 wifi나 lte를 이용해 인터넷을 통해 통신이 이루어진다는 뜻이다. 다만 HTTP, TCP등의 통신과 같이 Server-Client 구조로 이루어지는 것이 아니라 Broker, Publisher, Subscriber 구조로 이루어진다. "작은 코드 공간"(small code footprint)이 필요하거나 네트워크 대역폭이 제한되는 원격 위치와의 연결을 위해 설계되어 있다. P..

Data Science/Computer Vision

[OpenCV] [Pillow] [Python] 이미지 확장자 및 품질 변환 png - jpg

JPG(Joint Photographic Experts Group) 디지털 이미지 규격은 GIF, JPG(JPEG), PNG, BMP, TIFF, RAW 등이 있다. 여기서 일반적으로 많이 쓰이는 이미지 규격은 GIF, JPG(JPEG), PNG이다. 일반적으로 화질이 좋으면 용량은 커진다. 파일의 크기순대로 이미지 파일 포맷을 나열하면 아래와 같다. GIF

loading