포인터와 배열, 포인터 연산

Study 2021. 12. 6. 09:03

배열의 이름은 포인터이고, 값을 바꿀 수 없는 상수 형태의 포인터입니다. 또한, 배열의 요소들은 연속적인 메모리 주소값을 가지게 됩니다. 1. 1차원 배열 int arr[5] = {9, 2, 10, 3, 0}; printf("arr = %p\n", arr); printf("arr+1 = %p\n", arr+1); printf("arr+2 = %p\n", arr+2); printf("arr[0]의 주소 = %p\n", &arr[0]); printf("arr[1]의 주소 = %p\n", &arr[1]); printf("arr[2]의 주소 = %p\n", &arr[2]); printf("arr[3]의 주소 = %p\n", &arr[3]); printf("arr[4]의 주소 = %p\n", &arr[4]); 결..

Article Thumbnail
포인터 C++

Study 2021. 12. 2. 16:06

1. 포인터 사용 이유 함수에 인자를 전해줄 때를 생각하면 왜 포인터가 필요한지 이해하기 쉽습니다. 함수에 인자 전달 시 포인터를 사용하지 않는다면 전달되는 인자의 크기만큼의 메모리를 복사하게 되기 때문입니다. 만약 int형 100개를 가진 배열을 포인터를 쓰지 않고 인자로 전달한다면 복사하기 위해 4byte x 100 = 400byte의 메모리를 더 쓰게 되는 일이 발생합니다. 하지만 포인터를 쓰게 된다면 바로 배열의 메모리에 접근하여 값을 가져올 수 있게 됩니다. pc를 사용하면 메모리 용량이 커서 괜찮을 수도 있으나 임베디드 보드같이 메모리가 작다면 포인터를 사용할 수 밖에 없을 것입니다. 2. 포인터 선언 int *ptr = NULL; //int형 변수를 가리키는 포인터 float *ptr = N..

Article Thumbnail
1. make, cmake

Study 2021. 12. 2. 14:34

1. 매크로 CC=gcc CFLAGS=gcc옵션 CXX=g++ CPPFLAGS=g++옵션 INC=include path (ex. -I/home/moon/.../include) 2. 레이블 $* : 확장자가 없는 현재 target $@ : 현재 target CC=gcc OBJS=main.o main.o: main.c io.h test: $(OBJS) $(CC) -o $@ $*.c # $@ = test # $* = main 더보기 더보기 $@ : test $* : main $

[Yolo V3] BDD, COCO, KITTI dataset to Yolo

Project/Project 2020. 6. 4. 21:34

데이터 셋 조합하기 Kitti dataset을 Yolo dataset 형태로, BDD100K dataset -> COCO dataset -> Yolo dataset 형태로 변환, BDD100K dataset에서는 traffic light class만 추출해 따로 txt파일을 생성. 1. KITTI -> YOLO $ git clone https://github.com/packyan/PyTorch-YOLOv3-kitti.git $ cd PyTorch-YOLOv3-kitti/ $ sudo pip3 install -r requirements.txt $ cd label_transform 2. BDD -> COCO https://github.com/ucbdrive/bdd-data BDD json file을 COCO..

Article Thumbnail
[Yolo V3] 편의점 물품 객체 인식

Project/Project 2020. 6. 4. 21:00

GPU : GeForce RTX 2080 Ti SUPER 총 6개의 Class(chip, crispy, almond, gum, coffee, pepero)를 위에서 내려다보는 각도에 고정시킨 카메라로 볼 때 Object detection 결과를 확인하는 프로젝트를 수행했습니다. 1차 (학습 : 12000번) 물체의 옆 면과 윗면을 돌리면서 물체 자체를 회전시키는 데이터셋을 만들었습니다. Class 1 (원본 11개, rotate 396개, 총 407개) Class 2 (원본 9개, rotate 346개, 총 355개) Class 3 (원본 7개, rotate 504개, 총 511개) Class 4 (원본 18개, rotate 630개, 총 648개) Class 5 (원본 10개, rotate 489개, ..

Article Thumbnail
[OpenCV]차선 인식

OpenCV/OpenCV 2020. 5. 26. 18:02

사용환경 : Ubuntu 18.04 LTS, Python 3.7.7 OpenCV Version = 4.2.0.34 // 3.x 버전을 사용해도 O 유투브 영상: https://www.youtube.com/watch?v=ipyzW38sHg0 결과 영상: 1. Youtube 영상 불러오기 import youtube_dl import pafy url = 'https://www.youtube.com/watch?v=ipyzW38sHg0' video = pafy.new(url) best = video.getbest(preftype = 'mp4') cap = cv2.VideoCapture(best.url) frame_size = (int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)), int(cap...

Article Thumbnail
CLion에서 ROS 사용하기

Setting/Setting 2020. 5. 21. 11:38

사용환경 : Ubuntu 18.04 LTS, CLion 2020.1.1, ROS melodic 1. CLion 설치 www.jetbrains.com/ko-kr/clion/download/#section=linux 다운로드 CLion: 스마트한 C/C++용 크로스 플랫폼 IDE 최신 버전 다운로드: CLion (Windows, macOS, Linux) www.jetbrains.com - 원하는 경로에 tar.gz 파일 압축 풀기 $ tar -xvf CLion-2020.1.1.tar.gz -C [원하는 경로] 2. ROS pkg CLion에서 열기 - devel/setup.bash $ source ~/catkin_ws/devel/setup.bash - CLion 실행 $ cd clion-2020.1.1/bi..

Article Thumbnail
[ROS] ROS 시작하기 및 구조 이해 1

ROS/ROS 2020. 5. 15. 00:27

1. ROS 시작하기 ROS kinetic : ~raspberry pi 3, ~Ubuntu 16.04 ROS melodic : raspberry pi 4~, Ubuntu 18.04~, Jetson nano ROS 버전은 보드나 Ubuntu 버전에 따라 다르고 그 이후 실행 방법은 같습니다. kinetic install : wiki.ros.org/kinetic/Installation/Ubuntu melodic install : wiki.ros.org/melodic/Installation/Ubuntu 설치 후 ROS 실행을 위해 다음 명령어들을 실행시키면 됩니다. $ sudo apt-get install python-rosinstall $ source /opt/ros/kinetic(or melodic)/se..

Article Thumbnail
[OpenCV] Camera Calibration 2 (카메라 구멍 없이 왜곡 펴기)

OpenCV/OpenCV 2020. 5. 3. 20:10

사용 환경 : Ubuntu Linux 18.04 LTS, Python 3.7.7 OpenCV Version = 4.2.0.34 참고 블로그 : https://darkpgmr.tistory.com/31 카메라 왜곡보정 - 이론 및 실제 저번 카메라 캘리브레이션에 대한 포스팅에 이어 오늘은 카메라 렌즈 왜곡 보정에 대해 이론에서 실제까지 전반적인 내용을 포스팅합니다. 카메라 캘리브레이션 및 왜곡 보정은 영상처리 분야� darkpgmr.tistory.com 위 블로그의 수학적 모델을 참고해서 코드를 작성했습니다. 좀 더 이해하기 쉽도록 그림으로 그려보겠습니다. 먼저, 미리 보정된 이미지가 들어갈 검은색 이미지를 생성합니다. 만약 보정된 이미지가 검은 이미지에 들어간다면 아래의 그림과 같이 가장자리가 늘어난 이..

Article Thumbnail
[OpenCV]Camera Calibration(카메라 왜곡 펴기)

OpenCV/OpenCV 2020. 5. 3. 18:16

사용 환경 : Ubuntu Linux 18.04 LTS, Python 3.7.7 OpenCV Version = 4.2.0.34 2020/5/3 - [OpenCV] Camera Calibration 2 (카메라 구멍 없이 왜곡 펴기) 1. Chessboard image wc = 10 ## 체스 보드 가로 패턴 개수 - 1 hc = 7 ## 체스 보드 세로 패턴 개수 - 1 2. drawChessboardCorners objp = np.zeros((wc * hc, 3), np.float32) objp[:, :2] = np.mgrid[0:wc, 0:hc].T.reshape(-1, 2) objpoints = [] imgpoints = [] img = cv2.imread(file) ## 체스 보드 이미지 _img..

Article Thumbnail