-
영상처리 & opencv
[opencv] 직선 검출(Line Detection)
참고 출처 : https://076923.github.io/posts/Python-opencv-28/ https://opencv-python.readthedocs.io/en/latest/doc/25.imageHoughLineTransform/imageHoughLineTransform.html https://ko.wikipedia.org/wiki/%ED%97%88%ED%94%84_%EB%B3%80%ED%99%98 직선 검출 알고리즘: 허프 변환(Hough Transform)을 활용 (위 출처의 이론적인 설명이 자세하게 나와 있습니다 ) 위의 사진처럼 3개의 점에 대해서 원점에서 각 점까지의 거리를 𝜃, r로 표현할 수 있다. 이 곡선은 각 점(x, y)에 대해서 r=xsinθ+ycosθ을 만족한다. 허프 ..
-
영상처리 & opencv
[javascript/python] colab에서 웹캠 실행하기
colab에서는 opencv에서 웹캠을 사용하는 cv2.VideoCapture(0) 코드가 동작하지 않는다. 저 코드는 기기에 연결된 장치를 불러오는 데 colab은 서버에 연결되어 있기 때문이다..! 따라서 www.it-swarm.dev/ko/python/google-colab%EC%97%90%EC%84%9C-cap-cv2videocapture-0-%EC%82%AC%EC%9A%A9-%EB%B0%A9%EB%B2%95/809606863/ 링크 안의 https://colab.research.google.com/notebooks/snippets/advanced_outputs.ipynb#scrollTo=2viqYx97hPMi 에서 Camera Capture부분의 코드를 사용하여 colab에서 웹캠을 실행해보았다..
-
CS
[CS/책] 「오브젝트」4장 - 설계 품질과 트레이드오프
책 「오브젝트」 4장 설계 품질과 트레이드오프를 읽고 작성한 내용입니다. 객체지향 설계란 올바른 객체에게 올바른 책임을 할당하면서 낮은 결합도와 높은 응집도를 가진 구조를 창조하는 활동이다[Evers09]. 훌륭한 설계란 합리적인 비용 안에서 변경을 수용할 수 있는 구조를 만드는 것이다. 요즘 프로젝트를 진행하면서 설계는 매우 어렵다는 것을 깨닫고 있다. 4장을 읽으며 객체지향 설계를 데이터 중심으로 잘못하고 있다는 것을 한번 더 깨달았고, 의욕 넘치게 리팩토링을 시도해 보았으나.. 생각처럼 쉽지 않았다. 그래도 이번 기회에 문제라는 것을 상기하고 갈 수 있어서 좋았다. 데이터 중심 관점 객체의 상태는 구현에 속한다. 구현은 불안정하기 때문에 변하기 쉽다. 상태를 객체 분할의 중심축으로 삼으면 구현에 관..
-
영상처리 & opencv
[영상처리] 2D변환 - Rigid Transformation
출처 : darkpgmr.tistory.com/79 [영상 Geometry #3] 2D 변환 (Transformations) (3D 비전 geometry 3번째 파트 2D 변환입니다) 3. 2D 변환 (2D Transformations) 변환에 대해서는 2D 변환과 3D 변환을 구분해서 설명하겠습니다. 2D 변환은 detection 또는 tracking 문제에 있어서 아래 그림과.. darkpgmr.tistory.com 위 블로그의 Rigid 변환 부분 공부하고 요약 정리한 것. 의문점 : Rigid 변환에서 스케일 변화까지 고려하여 변환 후 나중에 스케일을 제거 한다. 이유는 회전 변환은 원점을 기준으로 하기 때문에 만일 두 점의 원점사이의 거리가 다르다면 이러한 회전 행렬이 존재하지 않기 때문......
-
임베디드 시스템
Jetson Nano Developer Kit 시작하기
developer.nvidia.com/embedded/learn/get-started-jetson-nano-devkit# 위의 링크를 보면서 차근차근 진행했다. microSD 카드에 이미지 쓰기 부분에서는 아래의 글에서 나온 오류가 발생하였고 해결했다. 이외에는 window버전으로 동일하게 진행하였다. jetson nano - balenaEtcher 오류 developer.nvidia.com/embedded/learn/get-started-jetson-nano-devkit#write Getting Started With Jetson Nano Developer Kit The NVIDIA® Jetson Nano™ Developer Kit is a small AI computer for makers, le....
-
Back-end
[Web] #1. Web개발의 이해 - FE/BE
20200712 저급언어 기계중심의 언어 : 프로그램 코드를 작성 2진수로 이루어진 값으로 작성하는 프로그래밍 언어를 기계어(Machine Language)라고 한다. 유지보수, 사용이 어려움 -> 기호를 만들어 프로그래밍 Compiler : 기호로 작성된 문장들을 원래의 숫자로 바꿔야 하는 과정에서 사용하는 도구 Assembly Language: 이러한 기호로 작성된 언어 고급 언어 사람중심의 언어 ex) C: 1972년 미국 벨 연구소의 데니스 리치에 의해 개발된 고급 언어, 시스템 프로그래밍에 가장 적합한 평가를 받는 언어 Kotlin : JVM기반 언어, java와 상호 운영, Swift와 마찬가지로 현대 프로그래밍 언어의 발전을 대다수 계승한 모던 프로그래밍 언어 HTTP(Hypertext Tr..
photo
new
-
study [nvme-cli] command 추가 방식 nvme-builtin.h 구조와 command 추가 방식https://github.com/linux-nvme/nvme-cli/blob/master/nvme-builtin.h COMMAND_LIST( ENTRY("list", "List all NVMe devices and namespaces on machine", list) ENTRY("list-subsys", "List nvme subsystems", list_subsys) // ... (중략)); COMMAND_LIST와 ENTRY 매크로를 사용해서 명령어(command) 정의각 ENTRY는 명령어 이름, 설명, 그리고 실제로 실행될 함수명을 인자로 받음이 구조는 새로운 명령어를 추가할 때 ENTRY를 하나 더 추가하면 되도록 설계되.. -
CS [CS/책] 「오브젝트」6장 - 메시지와 인터페이스 책 「오브젝트」 6장 메시지와 인터페이스를 읽고 작성한 내용입니다.클래스라는 구현 도구에 지나치게 집착하면 경직되고 유연하지 못한 설계에 이를 확률이 높아진다.훌륭한 객체지향 코드를 얻기 위해서는 클래스가 아니라 객체를 지향해야 한다. 좀 더 정확하게 말해서 협력 안에서 객체가 수행하는 책임에 초점을 맞춰야 한다. 여기서 중요한 것은 책임이 객체가 수신할 수 있는 메시지의 기반이 된다는 것이다.애플리케이션은 클래스로 구성되지만 메시지를 통해 정의된다는 사실을 기억하라[Metz12].협력과 메시지클라이언트-서버 모델협력은 어떤 객체가 다른 객체에게 무언가를 요청할 때 시작된다[Wirfs-Brock03].협력 안에서 메시지를 전송하는 객체를 클라이언트, 메시지를 수신하는 객체를 서버라고 부른다. 협력은 클라..
-
CS [CS/책] 「오브젝트」5장 - 책임 할당하기 책 「오브젝트」 5장 책임 할당하기를 읽고 작성한 내용입니다. 데이터 중심 설계로 인해 발생하는 문제점을 해결할 수 있는 가장 기본적인 방법은 데이터가 아닌 책임에 초점을 맞추는 것이다. 책임에 초점을 맞춰서 설계할 때 직면하는 가장 큰 어려움은 어떤 객체에게 어떤 책임을 할당할지를 결정하기가 쉽지 않다는 것이다. 책임 할당 과정은 일종의 트레이드오프 활동이다. 동일한 문제를 해결할 수 있는 다양한 책임 할당 방법이 존재하며, 어떤 방법이 최선인지는 상황과 문맥에 따라 달라진다. 따라서 올바른 책임을 할당하기 위해서는 다양한 관점에서 설계를 평가할 수 있어야 한다. 실제 설계는 코드를 작성하는 동안 이뤄진다. 그리고 협력과 책임이 제대로 동작하는지 확인할 수 있는 유일한 방법은 코드를 작성하고 실행해 보..
-
CS [CS/책] 「오브젝트」4장 - 설계 품질과 트레이드오프 책 「오브젝트」 4장 설계 품질과 트레이드오프를 읽고 작성한 내용입니다. 객체지향 설계란 올바른 객체에게 올바른 책임을 할당하면서 낮은 결합도와 높은 응집도를 가진 구조를 창조하는 활동이다[Evers09]. 훌륭한 설계란 합리적인 비용 안에서 변경을 수용할 수 있는 구조를 만드는 것이다. 요즘 프로젝트를 진행하면서 설계는 매우 어렵다는 것을 깨닫고 있다. 4장을 읽으며 객체지향 설계를 데이터 중심으로 잘못하고 있다는 것을 한번 더 깨달았고, 의욕 넘치게 리팩토링을 시도해 보았으나.. 생각처럼 쉽지 않았다. 그래도 이번 기회에 문제라는 것을 상기하고 갈 수 있어서 좋았다. 데이터 중심 관점 객체의 상태는 구현에 속한다. 구현은 불안정하기 때문에 변하기 쉽다. 상태를 객체 분할의 중심축으로 삼으면 구현에 관..