전체 글74 Opencv를 활용하여 이미지를 출력해보기 Opencv를 사용하여 이미지를 화면에 표시하는 기본적인 작업흐름을 알아보겠습니다.1.순서도 그 단계는 다음과 같습니다. 1.이미지 파일 열기더보기먼저 로커에 저장된 이미지파일의 경로를 파악하여 열어줍니다. 이때 ` cv2.imread() ` 함수를 사용합니다. 2.이미지를 화면에 표시더보기열었던 이미지를 화면에 표시하기 위해 `cv2.imshow()`함수를 사용합니다. 3.키 입력 대기더보기이미지를 화면에 표시한 후, 사용자가 키를 입력할때까지 대기한다. 이를 위해 cv2.waitKey()함수를 사용합니다.(마치 폴링이 돌고 있는 상황에서 중간에 인터럽트를 넣어서 새로운 이벤트를 발생시키는 것과 같습니다) 4.창 닫기더보기사용자가 키를 입력하여 인터럽트를 발생시키면, 표시된 창을 닫게 됩니다. 이는 .. Computer VIsion/기초(OpenCV) 2024. 8. 23. Opencv를 활용하여 영상을 프레임별로 출력해보기 이번 챕터에서는 Opencv를 사용하여 영상을 프레임별로 출력해보겠습니다. 그 과정을 순서도로 아래와 같이 나타낼수가 있겠습니다. 이 과정은 영상 파일을 불러와서 각 프레임을 읽고, 이를 회색조 이미지로 변환하여 출력하는 예제의 흐름을 시각적으로 표현한 것입니다. 주요 단계를 설명하면 다음과 같습니다.1.현재 작업 디렉토리를 동영상 파일 위치로 변경더보기Python 코드를 실행하기 전에 작업 디렉토리를 영상 파일이 위치한 폴더로 변경합니다. 이를 통해 동영상 파일을 쉽게 불러올 수 있는 데요, 이를 위해 아래에서 상대경로를 통해 위치를 잡아주도록 하겠습니다.2.지정한 영상파일에 대해 VideoCapture 객체 생성더보기Opencv에는 'VideoCapture'라는 생성자가 있어, 이를 통해 객체를 생.. Computer VIsion/기초(OpenCV) 2024. 8. 23. AttributeError: module 'pcl' has no attribute 'PointCloud' 위 문제는 자율주행차량을 돌리기 위해 ros의 rviz상에서 rosbag녹화딴거를 재생하는 시점에서 3차원데이터를 가공하기 위해 pcl라이브러리를 사용하기 위해 설치를 진행했으나, 계속해서 설치오류가 발생하여 이에 대해 기록한 부분이다. 분명 아래 절차를 통해 설치를 진행했다.sudo apt updatesudo apt install python3-pcl이렇게 설치가 완료된 후, PCL을 사용하여 포인트 클라우드 데이터의 처리를 진행했다.하지만 기존 오류가 계속 떠서 다른 방식으로 접근해보았다. 1. 소스 코드 다운로드`pcl.PointCloud` 메소드를 사용하기 위해서는 `v2.0` 버전의 pcl이 필요하다는 것을 알았다. 그래서 pip로 직접 해당 버전을 받는 것이 아닌, github에서 라이브러리의.. TroubleShooting 2024. 8. 3. 음수부호 표기가 잘 안되면? 이렇게 해결하자! 계측공학 문제를 파이썬 코드로 접근해서 풀려고 하다가 다음과 같은 문제가 생겼다. 일단 코드를 보면 이렇다. 이런 오류는 처음본다;ㄷㄷ;;찾아보니 Matplotlib이라는 패키지는 기본적으로 '-'(마이너스 부호)에 대한 표기에 있어서 제대로 출력되지 않는 고질적인 문제가 있다고 한다. 그래서 아래와 같은 오류를 종종 출력한다고 한다.UserWarning: Glyph 8722 (\N{MINUS SIGN}) missing from current font. 이럴 때에는 여느때처럼 matplotlib.pyplot를 임포트하고 나서 아래 코드를 추가하면 된다고 한다.plt.rcParams['axes.unicode_minus'] = False 나는 import구문 바로 아래에 아래와 같이 코드를 넣어주었다... matplolib/기본&입문 2024. 5. 18. CLI를 위한 간편하고 직관적인 도구, docopt에 대해 알아보자! 일단 제가 docopt에 대해 알아보게 된 계기는 동키카 프로젝트를 진행하면서 수집한 데이터를 기반으로 학습을 시키기 위해 train.py를 실행해야 되서 그 안에 뭐가 있나 들어가봤었는데 위에서 말한 docopt 모듈이 있었습니다. from docopt import docopt import donkeycar as dk from donkeycar.pipeline.training import train def main(): args = docopt(__doc__) cfg = dk.load_config() tubs = args['--tubs'] model = args['--model'] model_type = args['--type'] comment = args['--comment'] train(cfg, t.. 라이브러리&Module/깃허브 라이브러리 2024. 2. 9. 시스템의 정보를 알려면? - platform platform은 시스템의 정보를 확인할 때 사용하는 모듈이다. 내가 동키카 프로젝트를 진행하다가 config.py파일의 코드리뷰를 준비할때 의문이 든 코드가 있었다. 이 부분이다. import platform ... DONKEY_GYM = True # DONKEY_SIM_PATH = "/home/tkramer/projects/sdsandbox/sdsim/build/DonkeySimLinux/donkey_sim.x86_64" when racing on virtual-race-league use "remote", or user "remote" when you want to start the sim manually first. if (platform.system() == 'Windows'): #dspath .. 라이브러리&Module/표준라이브러리 2024. 2. 9. '넘파이'로 연립방정식과 고차방정식을 해결해보자! [자동제어] 수업을 들을때 연립방정식과 고차방정식을 해결해야 하는 경우가 종종 있습니다. 보통 상태공간에서 문제를 해결할때 연린방정식을, 그리고 전달함수에서 특성방정식의 근을 구할때 고차방정식을 사용합니다. 따라서 이번에는 파이썬코드를 통해 연립방정식 해법과 고차방정식 해법에 대해 알아보도록 하겠습니다. x와y에 대한 연립방정식 해결하기 문제) \begin{align*} 2x+y &= 8\\ 3x-2y &= -5\\ \end{align*} 위 연립방정식에서 x와 y의 값을 구하라. 이를 파이썬에서 넘파이를 써서 해결하기 위해 우선 행렬식 형태로 바꿔야 한다. $$A=\begin{bmatrix} 0 & 1 & 2\\ 3 & 4 & 5\\ 6 & 7 & 8 \end{bmatrix} $$ $ A = \begi.. 자료구조/numpy 제공 기본 자료구조 2023. 11. 26. 큰수의 법칙을 이해해보자! 큰수의 법칙? 경험적 확률과 수학적 확률 사이의 관계를 나타내는 법칙, 표본집단의 크기가 커지면 그 표본평균이 모평균에 가까워짐을 의미. 따라서 취합하는 표본의 수가 많아질수록 통계적 정확도는 상승 주사위를 돌린다고 가정해보자. 각 사건의 확률이 동일한 일반적인 주사위가 있다고 해보자. 이 주사위를 던질 경우 각각의 숫자가 나올 확률은 1/6이다. 이를 백분율로 나타내보면, 16.67%이다. 따라서 주사위를 6번 던진다면 모든 숫자가 1번씩 나와야 하는개 대략적인 논리이다. 하지만 천운?이 따라서, 한평생 쓸 운을 모두 끌어다가 써서 20번 연속으로 1이 나왔다고 해보자. 그럼에도 불구하고 총 시행횟수가 늘어나면 어쩔수없이 다른 숫자들이 나올 확률이 커져서 16.67%에 수렴한다는 것이 통계학 세계에서 .. A.I(인공지능)/Datascience 2023. 10. 22. RuntimeWarning: divide by zero encountered in scalar divide M[n, m] = num / den 해결방법 아래 코드를 실행했을때, 정상적으로 3d_plot이 나오기는 했지만, '런타임워닝'이 떴다. import numpy as np import matplotlib.pyplot as plt B = [1, -20] A = [1, 0, 100] S = np.zeros((50, 50), dtype=complex) for n in range(50): for m in range(50): S[n, m] = (n - 25) + 1j * (m - 25) M = np.zeros((50, 50), dtype=complex) for n in range(50): for m in range(50): s = S[n, m] num = B[0] * s + B[1] den = A[0] * s**2 + A[1] * s**1 + A[2] M[.. TroubleShooting 2023. 10. 20. 'figsize'라는 속성값을 써서 크기 조정하고 타이틀 겹침 문제를 해결하기 다음과 같이 삼각함수와 역삼각함수를 플롯에 도식화하는 코드와 결과가 있다. 코드> import matplotlib.pyplot as plt import numpy as np x = np.linspace(-np.pi, np.pi, 200) x2 = np.linspace(-1, 1, 200) fig, axes = plt.subplots(3,2) #2행 2열 axes[0][0].plot(x, np.sin(x)) axes[0][0].set_title('Sine_func()') axes[0][1].plot(x2, np.arcsin(x2)) axes[0][1].set_title('ArcSine_func()') axes[1][0].plot(x, np.cos(x)) axes[1][0].set_title('Cosine_.. matplolib/기본&입문 2023. 10. 10. RuntimeWarning: invalid value encountered in arcsin axes[1][1].plot(x, np.arcsin(x)) 해결방법 삼각함수인 sin() / cos() / tan() 에 대해 다음과 역삼각함수로 표현하는 파이썬 코드를 짜보았다. 코드> import matplotlib.pyplot as plt import numpy as np x = np.linspace(-np.pi, np.pi, 200) fig, axes = plt.subplots(3,2, figsize=(8,12)) #2행 2열 axes[0][0].plot(x, np.sin(x)) axes[0][0].set_title('Sine_func()') axes[0][1].plot(x, np.arcsin(x)) axes[0][1].set_title('ArcSine_func()') axes[1][0].plot(x, np.cos(x)) axes[1][0].set_title('C.. TroubleShooting 2023. 10. 10. TypeError: FigureBase.gca() got an unexpected keyword argument 'projection' 해결방법 아래 링크에서 matplotlib이라는 모듈을 써서 3차원 플롯을 그리는 법을 알게 되었다. http://www.gisdeveloper.co.kr/?p=7353 파이썬의 matplotlib 노트 – GIS Developer 파이썬의 matplotlib는 수치 데이터를 그래프로 효과적으로 표시해주는 API입니다. 이에 대해 간단한 활용 예시에 대한 코드를 기록해 둡니다. import matplotlib.pyplot as plt x = [1, 2, 3, 4, 5] y = [1, 2, 3, 4, 5] www.gisdeveloper.co.kr 위 링크에 따르면 코드와 그 결과는 다음과 같았다. 코드> import numpy as np from mpl_toolkits.mplot3d import Axes3D imp.. TroubleShooting 2023. 10. 9. 이전 1 2 3 4 5 ··· 7 다음