728x90

IT/언어 133

[python/Open3D] open3D를 사용해 point cloud를 메쉬로 생성하기

Open3D는 3D데이터를 다루는 소프트 웨어의 개발을 서포트하는 오픈 소스 라이브러리이다. Open3D는 C++와 Python 프론트엔드를 제공하고 있으며, 엄선된 데이터 구조와 알고리즘을 두 환경에서 이용가능하다. 공식 사이트는 여기를 참고하길 바란다. 이번 포스팅에서는 이 라이브러리를 이용해서 point cloud를 3D mash(.obj, .ply, .stl, .gltf)로 변경하는 일련의 프로세스에 대해 설명하고자 한다. 데이터를 로드하여 준비하기 라이브러리를 import한다. import numpy as np import open3d as o3d 데이터가 저장되어 있는 파일의 경로를 작성한다. input_path="your_path_to_file/" output_path="your_path_t..

IT/언어 2022.01.15

[python] 오브젝트의 속성을 조작하는 delattr/getattr/hasattr/setattr

내장함수 delattr/getattr/hasattr/setattr은 각각 오브젝트로부터 속성의 삭제/오브젝트의 속성 값의 획득/오브젝트에 속성이 있는지 확인/오브젝트에 대해 속성을 설정을 한다. 아래와 같이 표시할 수 있다. delattr(object, name) # object로부터 속성name을 삭제 getattr(object, name[, default]) # object의 속성 name값을 획득 hasattr(object, name) # object에 속성 name가 있는지를 확인 setattr(object, name, value) # object의 속성 name값을 value로 설정 내장함수 delattr/getattr/hasattr/setattr delattr 내장함수 delattr는 제1인수..

IT/언어 2022.01.13

[python/OpenCV] cv2.Canny():Canny방법을 이용하여 물체의 외곽선(엣지) 추출하기

외곽선(엣지)란 물체간 혹은 배경과의 경계를 일컫는 것으로, 외곽선(엣지) 검출이란 일반적으로 이미지 안의 화소치의 변화, 휘도의 변화가 커다란 부분을 검출하여 엣지를 추출하는 이미지 처리를 의미한다. cv2.Canny()이란 OpenCV에 제공되어 있는 엣지 검출 함수로, 이미지의 엣지만을 되돌려준다. 다만, 적절히 사용하기 위해서는 1개의 파라미터를 조정해야할 필요가 있다. 기본적인 문법은 다음과 같다. cv2.Canny(gray_img, threshold1, threshold2) 간단히는 threshold1와 threshold2 어느쪽도 엣지 여부의 판단하는 임계값을 나타내고 있다. 클수록 엣지가 검출되기 어렵고, 작을 수록 엣지가 검출되기 쉽다(그 값이 크면, 보다 커다란 휘도 변화가 나타날 때가..

IT/언어 2022.01.04

[python/Numpy] 분산을 계산하는 var()의 사용법과 주의법

Numpy에는 배열 요소의 분산 계산해주는 np.var()가 준비되어 있다. 이 포스팅에서는 이 함수의 사용법과 주의법에 대해 설명하고자 한다. 또한, 동일한 기능을 하는 ndarray.var도 있는데 옵션이 완전히 동일하므로, np.var에 대해서 설명하도록 하겠다. 더욱이, np.nanvar이라는 함수가 있는데, 보통의 np.var의 경우 대상이 되는 배열에 결손값 nan이 포함되어 있는 경우, nan이 반환된다. 그러나 np.nanvar으로는 결손값 nan을 무시하고 그외의 배열 요소의 분산을 계산한다. 이 차이는 기억해두면 좋을 것이다. 기본 서식 np.var(a, axis=None, dtype=None, out=None, ddof=0, keepdims=) 인수 데이터 형 해설 a array_li..

IT/언어 2021.12.24

[python/Numpy] Numpy 요소 바꾸는 함수

numpy.where() numpy.where()은 조건문을 만족하는 요소와 만족하지 않은 요소를 각각 지정한 숫자나 불 값으로 바꿔주는 함수이다. 기본 구문은 다음과 같다. numpy.where(condition, x, y) condition에는 배열을 포함한 조건문을 넣고, condition이 참일 때는 x로 값을 바꾸고, 거짓일 경우는 y로 값을 치환한다. numpy.where()을 사용하여 배열의 짝수 요소를 0, 홀수 요소를 1로 치환해보자. # NUMPY_WHERE # In[1] import numpy as np # [[1 2 3] # [4 5 6] # [7 8 9]] a = np.arange(1, 10).reshape(3, 3) # 짝수는 0, 홀수는 1으로 치환한다. b = np.where..

IT/언어 2021.11.28

[python] 문자열에서 특정(일부) 문자만 삭제하는 방법들

이번 포스팅에서는 python에서 불필요한 물자열을 삭제하는 네 가지 방법에 대해 알아보고자 한다. - strip 메소드 : 양 끝의 불필요한 문자를 삭제한다. - replace 메소드 : 지정 문자열을 치환하여 삭제한다. - translate 메소드 : 여러 개로 지정한 문자열을 한 번에 삭제한다. - re.sub 함수 : 복잡한 패턴의 문자열을 치환하여 삭제한다. strip메소드는 주의점이 있으므로, 제대로 확인해 둘 필요가 있다. 또한 이 중에서 translate 메소드가 제일 처리 속도가 빠르다. 이제 본격적으로 각각의 특징에 대해 알아보자. strip 메소드로 문자열을 삭제하는 방법 strip 메소드에는 세 가지가 있다. - strip : 양 끝단의 불필요한 문자열을 삭제 - lstrip : 왼..

IT/언어 2021.11.17

[python/OpenCV] OpenCV를 이용한 픽셀 논리연산 - AND, OR, XOR, NOT

python 이미지 처리 라이브러리인 OpenCV를 이용해 2개의 이미지를 합성하거나 겹치는 방법으로 bitwise를 사용할 수 있다. 이번 포스팅에서 간단히 논리연산 AND, OR, XOR, NOT에 대해 2개의 이미지를 사용해 각각 어떤 원리인지 간단하게 살펴보고자한다. 2개의 이미지를 준비 다음의 코드로 두 가지 이미지를 읽어들였다. import cv2 import matplotlib.pyplot as plt %matplotlib inline img1 = cv2.imread('images/img1.jpg') img2 = cv2.imread('images/img2.jpg') 각각의 이미지를 살펴보면 다음과 같다. plt.imshow(img1) plt.imshow(img2) AND 연산 - bitwis..

IT/언어 2021.11.15

[python/OpenCV] OpenCV를 이용해 이미지의 특정 색 추출 (RGB vs HSV)

OpenCV를 사용해서 특정 범위의 색을 추출하는 방법에 대해서 알아보고자 한다. 예를 들어 (0, 0, 100) ~ (100, 100, 225)와 같이 색 범위를 전달해, 그 내용을 바탕으로 범위 내의 화소만을 추출하고자 한다. 색의 추출의 경우 이미지의 RGB를 사용하는 방법도 있지만, RGB를 HSV로 변환하여 HSV에서 색을 추출하는 방법도 있다. 이번 포스팅에서 이 두 가지 방법에 대해 알아보고 비교해보고자 한다. HSV : Hue, Saturation, Value HSV이란 색상(Hue), 채도(Saturation), 명도(Value) 세 가지 성분을 이용해 색을 표현하는 방법으로, RGB와 같이 빛의 3원색(빨강, 초록, 파랑)과는 다른 세 가지 축으로 색을 표현한다. 1) 색상(Hue) :..

IT/언어 2021.11.15

[python] Numpy배열 ndarray를 결합시키는 방법(concatenate, stack, block 등)

여러 개의 Numpy 배열 ndarray를 결합(연결)하기 위한 다양한 함수가 있다. 이번 포스팅에서는 아래의 내용에 대해서 설명하도록 하겠다. - numpy.concatenate()의 기본 사용법 - 결합할 배열 ndarray의 리스트를 지정 - 결합할 축(차원)을 지정 : 인수 axis - numpy.stack()으로 새로운 축(차원)에 따른 결합 - numpy.block()으로 배치를 지정하여 결합 - numpy.vstack()으로 세로로 결합 - numpy.hstack()으로 가로로 결합 - numpy.dstack()으로 깊이 방향으로 결합 기존의 축(차원)에 따라 결합하는 것이 numpy.concatenate()로, 새로운 축에 따라 결합하는 것이 numpy.stack()이다. 예를 들어, 2차..

IT/언어 2021.11.02

[python] python을 이용해 GPU 사용률 등의 정보 얻기(nvidia-smi커맨드)

linux의 경우 nvidia-smi 커맨드를 사용해서 바로 GPU 사용률 등에 대한 정보를 취득할 수 있으나, windows환경에서는 곤란할 때가 있다. windows환경 상에서 python 코드를 이용한 nividia-smi커맨드를 적용할 수 있는 방법을 알아보고자한다. python으로 nividia-smi의 정보를 얻을 수 있는 함수 만들기 import subprocess import json DEFAULT_ATTRIBUTES = ( 'index', 'uuid', 'name', 'timestamp', 'memory.total', 'memory.free', 'memory.used', 'utilization.gpu', 'utilization.memory' ) def get_gpu_info(nvidia_..

IT/언어 2021.09.24
728x90