nnstreamer-preprocessor / nnstreamer

4 stars 0 forks source link

NNStreamer 파이프 라인에 데이터 넣기 #12

Closed ddeokho closed 4 years ago

ddeokho commented 4 years ago

목표 : NNStreamer 코드를 수정해서 파이프라인데 data를 넣기. (v4l2src 대신 appsrc 이용)

결과물 : NNStreamer 파이프라인의 구동

마감 : 3/11(수)

리뷰어 : 다운 님, 용희 님

ddeokho commented 4 years ago

현재 진행 : NNStreamer 예제에 2D projection을 구성한 Gstreamer 코드 연결

https://github.com/nnstreamer-preprocessor/nnstreamer-gstreamer/blob/ddeokho/nnstreamer_example_object_detection_tf3.cc

이슈 변경 후 컴파일을 하니 아래 사진과 같은 에러가 발생 Screenshot from 2020-03-11 04-17-35

(py36) deokho@deokho-ThinkPad-T480s:~/nnstreamer-example/native/example_object_detection_tensorflow/nnstreamer-gstreamer$ g++ nnstreamer_example_object_detection_tf3.cc -o nntest3 `pkg-config --cflags --libs gstreamer-1.0 gstreamer-video-1.0 cairo gstreamer-app-1.0`

In file included from /usr/include/glib-2.0/gobject/gobject.h:28:0,
                 from /usr/include/glib-2.0/gobject/gbinding.h:29,
                 from /usr/include/glib-2.0/glib-object.h:23,
                 from /usr/include/gstreamer-1.0/gst/gstenumtypes.h:7,
                 from /usr/include/gstreamer-1.0/gst/gst.h:31,
                 from nnstreamer_example_object_detection_tf3.cc:26:
nnstreamer_example_object_detection_tf3.cc: In function ‘int main(int, char**)’:
/usr/include/glib-2.0/gobject/gsignal.h:475:103: error: cannot convert ‘AppData’ to ‘gpointer {aka void*}’ for argument ‘4’ to ‘gulong g_signal_connect_data(gpointer, const gchar*, GCallback, gpointer, GClosureNotify, GConnectFlags)’
     g_signal_connect_data ((instance), (detailed_signal), (c_handler), (data), NULL, (GConnectFlags) 0)
                                                                                                       ^
nnstreamer_example_object_detection_tf3.cc:722:3: note: in expansion of macro ‘g_signal_connect’
   g_signal_connect (g_app.appsrc, "need-data", G_CALLBACK (start_feed), g_app);
   ^~~~~~~~~~~~~~~~
/usr/include/glib-2.0/gobject/gsignal.h:475:103: error: cannot convert ‘AppData’ to ‘gpointer {aka void*}’ for argument ‘4’ to ‘gulong g_signal_connect_data(gpointer, const gchar*, GCallback, gpointer, GClosureNotify, GConnectFlags)’
     g_signal_connect_data ((instance), (detailed_signal), (c_handler), (data), NULL, (GConnectFlags) 0)
                                                                                                       ^
nnstreamer_example_object_detection_tf3.cc:723:3: note: in expansion of macro ‘g_signal_connect’
   g_signal_connect (g_app.appsrc, "enough-data", G_CALLBACK (stop_feed), g_app);

우선 gstremaer 코드에서는 문제가 없는데 옮기는 과정이나 연결이 제대로 안되었는지 확인이 필요.

hayleyshim commented 4 years ago

옮기는 과정이나 연결 확인을 의미하는 것이 gstreamer - nnstreamer 간 연결 시 기존 예제의 appsrc 에 data를 넣는걸 말씀하시는 거죠? 현재 제 환경에서도 동일한 에러가 발생해요

DownyBehind commented 4 years ago

master branch에 해당 issue를 수정한 코드 올려놓았습니다.

현재는 build가 정상적으로 됩니다.

파일 이름 : nnstreamer_example_object_detection_tf3_2.cc

hayleyshim commented 4 years ago

현재 덕호님 branch의 파일 nnstreamer_example_object_detection_tf2 에서 model을 squeezenet으로 교체했을 시 에러없이 잘 동작합니다.

파일 nnstreamer_example_object_detection_tf3_2.cc 에서는 빌드는 되나 실행 시 아래와 같이 모델을 불러오지 못합니다. default인 ssdlite_mobilenet_v2.pb 모델입니다.

image

hayleyshim commented 4 years ago

방금 3월 12일(목) 올려주신 tf_init 추가된 코드 돌려보면 뜨는 에러입니다.

image

[Error Message]

ERROR:/build/nnstreamer-G2nmcV/nnstreamer-1.5.0.0/ext/nnstreamer/tensor_filter/tensor_filter_tensorflow.cc:388:int TFCore::validateTensor(const GstTensorsInfo*, int): assertion failed: (tensorInfo->info[i].type == getTensorTypeFromTF (type)) 중지됨 (core dumped)

[assertion failed]

ddeokho commented 4 years ago

아 파이프 라인에 input type이 float32로 되어있었네요. 그걸 uint8로 변경하시면 되어요.

https://github.com/nnstreamer-preprocessor/nnstreamer-gstreamer/blob/85663fb989afe018f1fe5a95291614d78cddbad8/nnstreamer_example_object_detection_tf3_2.cc#L703

ddeokho commented 4 years ago
2020-03-13 02:22:31.993854: I tensorflow/core/platform/cpu_feature_guard.cc:141] Your CPU supports instructions that this TensorFlow binary was not compiled to use: SSE4.1 SSE4.2 AVX AVX2 FMA
data_point/0000000000.txt
number of point cnt=120574
ERROR: from element /GstPipeline:pipeline0/GstAppSrc:src: Internal data stream error.
Additional debug info:
gstbasesrc.c(3055): gst_base_src_loop (): /GstPipeline:pipeline0/GstAppSrc:src:
streaming stopped, reason not-negotiated (-4)
Segmentation fault

에러는 이런 형태이고

/* run main loop */
  g_main_loop_run (g_app.loop);

위 부분에서 에러가 나는데 파이프라인이 제대로 반복하지 못하는 거 같아요. 그런데 gstreamer의 appsrc부분에는 g_main_loop_run을 사용하지 않고 강제로 for를 이용해 돌려줬었는데 저희가 스트림 단위로 돌리는 게 아니기 때문에 위와 같은 방식으로 해야 하는 거 아닐까요?

hayleyshim commented 4 years ago

네, 저도 input data type 을 바꿨을 때 동일한 에러가 났어요.

image

ERROR: from element /GstPipeline:pipeline0/GstAppSrc:src: Internal data stream error.
Additional debug info:
gstbasesrc.c(3055): gst_base_src_loop (): /GstPipeline:pipeline0/GstAppSrc:src:
streaming stopped, reason not-negotiated (-4)
세그멘테이션 오류 (core dumped)

for문으로 반복하는 대신 g_main_loop_run 으로 시도해보자는 말씀이시죠? 찾아보고 얼른 에러 해결해야겠네요~!

ddeokho commented 4 years ago

g_main_loop_run 대신에 for로 돌려보려해요. 저희가 작업하고 있는 코드는 g_main_loop_run을 사용하고 있거든요.. 그런데 이건 방법이 아닌 거 같다는 생각도 드네요.. 데이터 타입부터 맞는 지 좀 찾아봐야 할 거 같아요

hayleyshim commented 4 years ago

덕호님, 왜 g_main_loop_run()을 사용하는 부분에서 for문을 적용하여 파일을 불러오는 방법이 아니라고 생각하셨나요?

저도 지금 gstreamer internal data streaming과 관련하여 찾아보고있는데

 /* run main loop */
  //g_main_loop_run (g_app.loop);

해당 부분을 주석처리하여 실행하면 문제가 없어서, 지금 발생되는 에러인 연속된 파일을 불러오지 못하는 것과 관련하여 해결이 필요해보입니다. 기존 gstreamer appsrc 부분에서 g_main_loop_run() 함수 대신 for문으로 구현하여 파일을 불러오셨다하셨는데, 이를 동일하게 적용했을 때 무엇이 문제인가요?

ddeokho commented 4 years ago

해당 코드 를 630, 64 -> 640, 480으로 변경

/* setup */
  g_object_set (G_OBJECT (g_app.appsrc), "caps",
      gst_caps_new_simple ("video/x-raw",
             "format", G_TYPE_STRING, "RGB16",
             "width", G_TYPE_INT, 640, //@dw 20.03.09
             "height", G_TYPE_INT, 480,
             "framerate", GST_TYPE_FRACTION, 25, 1,
             NULL), NULL);

  /* setup appsrc */
  g_object_set (G_OBJECT (g_app.appsrc),
    "stream-type", 0, // GST_APP_STREAM_TYPE_STREAM
    "format", GST_FORMAT_TIME,//GST_FORMAT_TIME
        "is-live", TRUE,
    NULL);

아래 사진과 같이 화면이 뜨나 까맣게만 나옴.

Screenshot from 2020-03-14 19-10-25

appsrc에서도 동작하는 것 확인 했으나 아래의 에러가 발생.

(py36) deokho@deokho-ThinkPad-T480s:~/nnstreamer-example/native/example_object_detection_tensorflow/nnstreamer-gstreamer$ sudo ./nntest333                                  2020-03-14 19:10:25.166165: I tensorflow/core/platform/cpu_feature_guard.cc:141] Your CPU supports instructions that this TensorFlow binary was not compiled to use: SSE4.1 SSE4.2 AVX AVX2 FMA
data_point/0000000000.txt
number of point cnt=120574
data_point/0000000001.txt
ERROR: from element /GstPipeline:pipeline0/GstVideoConvert:videoconvert0: Internal GStreamer error: code not implemented.  Please file a bug at http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer.
Additional debug info:
gstvideofilter.c(293): gst_video_filter_transform (): /GstPipeline:pipeline0/GstVideoConvert:videoconvert0:
invalid video buffer received
number of point cnt=120831
data_point/0000000002.txt
ERROR: from element /GstPipeline:pipeline0/GstVideoConvert:videoconvert0: Internal GStreamer error: code not implemented.  Please file a bug at http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer.
Additional debug info:
gstvideofilter.c(293): gst_video_filter_transform (): /GstPipeline:pipeline0/GstVideoConvert:videoconvert0:
invalid video buffer received
number of point cnt=121015
Segmentation fault

Internal data stream error는 630, 64의 크기로 화면을 열 수 없었기에 발생한 것으로 판단.

ddeokho commented 4 years ago

NNStreamer pipeline 도는 것 확인

Screenshot from 2020-03-14 19-24-28

위와 같은 결과 나옴.

ThinkPad-T480s:~/nnstreamer-example/native/example_object_detection_tensorflow/nnstreamer-gstreamer$ sudo ./nntest333 
2020-03-14 19:34:20.860266: I tensorflow/core/platform/cpu_feature_guard.cc:141] Your CPU supports instructions that this TensorFlow binary was not compiled to use: SSE4.1 SSE4.2 AVX AVX2 FMA
data_point/0000000000.txt
number of point cnt=120574
data_point/0000000001.txt
number of point cnt=120831
data_point/0000000002.txt
number of point cnt=121015
Segmentation fault

하지만 데이터가 입력되는 중에 생기는 Segmentation fault는 해결해야 함.

ddeokho commented 4 years ago

valgrind로 'appsrc를 이용해 만든 것'과 '기존 NNStreamer예제' 둘 다 체크해 보았습니다.

그런데 결과는 두 개가 같네요.

appsrc

==13164== LEAK SUMMARY:
==13164==    definitely lost: 16,384 bytes in 1 blocks
==13164==    indirectly lost: 0 bytes in 0 blocks
==13164==      possibly lost: 4,196 bytes in 61 blocks
==13164==    still reachable: 8,084,732 bytes in 121,372 blocks
==13164==                       of which reachable via heuristic:
==13164==                         length64           : 464 bytes in 11 blocks
==13164==                         newarray           : 4,576 bytes in 25 blocks
==13164==         suppressed: 0 bytes in 0 blocks
==13164== Reachable blocks (those to which a pointer was found) are not shown.
==13164== To see them, rerun with: --leak-check=full --show-leak-kinds=all
==13164== 
==13164== For counts of detected and suppressed errors, rerun with: -v
==13164== ERROR SUMMARY: 63 errors from 63 contexts (suppressed: 0 from 0)

기존 NNStreamer 예제

==13147== LEAK SUMMARY:
==13147==    definitely lost: 16,384 bytes in 1 blocks
==13147==    indirectly lost: 0 bytes in 0 blocks
==13147==      possibly lost: 4,236 bytes in 61 blocks
==13147==    still reachable: 8,103,726 bytes in 121,563 blocks
==13147==                       of which reachable via heuristic:
==13147==                         length64           : 648 bytes in 12 blocks
==13147==                         newarray           : 4,640 bytes in 29 blocks
==13147==         suppressed: 0 bytes in 0 blocks
==13147== Reachable blocks (those to which a pointer was found) are not shown.
==13147== To see them, rerun with: --leak-check=full --show-leak-kinds=all
==13147== 
==13147== For counts of detected and suppressed errors, rerun with: -v
==13147== ERROR SUMMARY: 63 errors from 63 contexts (suppressed: 0 from 0)

처음 해보는 거라 하나씩 찾아가면서 다 체크해봐야 할 거 같아요.

ddeokho commented 4 years ago

위의 내용을 처리하기 어려워 NNStreamer 이슈에 질문을 남기려 합니다.

  1. nnstreamer_example_object_detection 예제 코드를 돌릴 때 segmentation fault 발생(단 sudo 권한으로 돌리면 구동함)
  2. 그래서 해당 예제에 v4l2src대신 appsrc를 넣는 코드 작성
  3. 그러나 sudo 권한으로도 몇 개의 파일을 가져온 후 segmentation fault 상황 발생(메모리 문제라 추측)
  4. 해당 코드를 valgrind를 이용해 돌렸더니 만든 코드와 예제 코드가 같은 문제 발생
  5. 우리가 구성한 NNStreaer 내에 메모리 할당을 조정해야 할 거 같다는 판단이며 어떻게 해야 할 지 질문

간략히 생각해본 설명과 질문인데 어떻게 하면 더 잘 설명하고 질문할 수 있을지 좀 더 고민해보고 내일 오전에 NNStreamer 이슈에 질문 남기도록 할게요.

ddeokho commented 4 years ago

NNStreamer 이슈에 질문 남겼습니다. 우선 예제 코드를 sudo권한 없이 돌렸을 때 나오는 segmentation fault (core dumped) 이슈부터 해결 한 후 저희가 만든 코드를 돌려고 합니다.(이 문제로 인해 발생 한다고 생각함)

  1. 예제 sudo 권한 없이 돌렸을 때 나오는 에러 해결
  2. 해결 후 우리 코드를 돌려봄 그리고 거기서 나오는 에러를 다시 질문 드리려함

질문 : https://github.com/nnsuite/nnstreamer/issues/2187

myungjoo commented 4 years ago

1 -> 사용하는 모든 화일 권한부터 확인하세요. 권한 문제는 nnstreamer하고 관계없는 OS 문제입니다. 실행 에러잡을때, 특히 segmentation fault면 fault가 난 thread의 stack trace와 문제가 난 지점의 source과 그 순간의 관련 변수값 정도는 보여주셔야 의미있는 답변이 가능합니다.

ddeokho commented 4 years ago

1 -> 사용하는 모든 화일 권한부터 확인하세요. 권한 문제는 nnstreamer하고 관계없는 OS 문제입니다. 실행 에러잡을때, 특히 segmentation fault면 fault가 난 thread의 stack trace와 문제가 난 지점의 source과 그 순간의 관련 변수값 정도는 보여주셔야 의미있는 답변이 가능합니다.

친절히 답해 주셔서 감사합니다!

확인해야 할 사항(오늘 밤까지)

  1. 권한
    (py36) deokho@deokho-ThinkPad-T480s:~/nnstreamer/bin/tf_model$ ls -al
    total 19460
    drwxr-xr-x 2 deokho deokho     4096  3월  7 04:13 .
    drwxr-xr-x 6 deokho deokho     4096  3월 12 20:19 ..
    -rwxrwxrwx 1 deokho deokho      665  3월  7 04:12 coco_labels_list.txt
    -rwxrwxrwx 1 deokho deokho 19911343  3월  7 03:52 ssdlite_mobilenet_v2.pb
  1. stack trace
    • gdb이용해 확인 해당 appsrc를 이용해 구성한 코드의 문제가 무엇인지 확인하기. 그리고 더 많은 정보를 어떻게 가져올 수 있는지 찾아보기
tection_tensorflow/nnstreamer-gstreamer$ gdb -q ./nntest333
Reading symbols from ./nntest333...done.
(gdb) run
Starting program: /home/deokho/nnstreamer-example/native/example_object_detection_tensorflow/nnstreamer-gstreamer/nntest333 
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".

(nntest333:16829): GLib-CRITICAL **: 17:20:19.625: g_file_test: assertion 'filename != NULL' failed

Program received signal SIGSEGV, Segmentation fault.
0x00007ffff6da5580 in g_str_hash ()
   from /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0

모르는 게 많아 공부해서 최대한 오늘 밤까지 하고 내용 공유 할게요.

hayleyshim commented 4 years ago
  1. 권한

image

덕호님, 문의주신 파일 권한에 대해 확인한 사항입니다.

저 또한 현재 segmentation fault가 발생하고 있어 제 파일 권한과 비교하는 것이 의미가 있을지 모르겠습니다.

일단 저의 경우 위와 같이 나옵니다.

NNStreamer mainainter 께서 주신 답변을 바탕으로 OS 문제로 파악되는 부분에 대해 research 하며 정리된 내용 이슈에 남기도록 하겠습니다!

ddeokho commented 4 years ago

1. 권한

제가 정확히 안적어서 다른 걸 이해하셨어요. 제 바운더리 컨디션?은 저희가 아무것도 건드리지 않은 예제로(해당 예제의 코드는 '기본 예제', 저희가 변경한 것은 'appsrc 변경 코드'라 명) 한정된 상태에요. 이것을 구동시킬 때 생기는 문제부터 해결해야 할 것 같아서요. 그래서 용희 님과 비교해 보려하는 것은 ''appsrc 변경 코드'가 아닌 '기본 예제(nnstreamer_example_object_detection_tf )' 구동 여부와 그 권한이였어요.

이유는 '기본 예제'를 돌렸을 때 저는 sudo 권한 없이는 안돌아 갔고 용희 님은 구동이 되었기 때문이에요. 그리고 이 환경 차이가 'appsrc 변경 코드'에서 생기는 문제에 중복으로 있지 않을까 생각해 '기본 예제'를 sudo권한을 주지 않은 채 돌렸을 때 segmentaion fault가 나오는 상황부터 해결하려 했어요.

답변해 주신 내용을 참고

Check the permissions, owner, attibute of ./tf_model/ssdlite_mobilenet_v2.pb in your binary directory.

제 권한(답변을 보고 넓혀봄)과 용희 님 권한이 같은 걸 확인.

(py36) deokho@deokho-ThinkPad-T480s:~/nnstreamer/bin/tf_model$ ls -al
total 19460
drwxr-xr-x 2 deokho deokho     4096  3월  7 04:13 .
drwxr-xr-x 6 deokho deokho     4096  3월 12 20:19 ..
-rwxrwxrwx 1 deokho deokho      665  3월  7 04:12 coco_labels_list.txt
-rwxrwxrwx 1 deokho deokho 19911343  3월  7 03:52 ssdlite_mobilenet_v2.pb

image

그럼에도 제 환경에서는 같은 문제가 발생 중. OS에서 무엇을 더 해줘야 하는 지 찾아봐야함.

2. stack trace

segmentation fault를 해결하기 위해 구체적인 정보를 뽑기 위해 필요. 이 부분은 '기본 예제'와 'appsrc 변경 코드'를 sudo 권한을 줬을 때 주지 않았을 때로 나누어 gdb로 돌려봄. (이걸 stack trace라고 할 수 있는 건지는 잘 모르겠네요..)

기본 예제

(nnstreamer_example_object_detection_tf:17229): GLib-CRITICAL **: 17:25:38.723: g_file_test: assertion 'filename != NULL' failed

Program received signal SIGSEGV, Segmentation fault. 0x00007ffff7af9580 in g_str_hash () from /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0


**appsrc 변경 코드**
- sudo 권한 줬을 때

(py36) deokho@deokho-ThinkPad-T480s:~/nnstreamer-example/native/example_object_detection_tensorflow/nnstreamer-gstreamer$ sudo gdb -q ./nntest333 [sudo] password for deokho: Sorry, try again. [sudo] password for deokho: Reading symbols from ./nntest333...done. (gdb) run Starting program: /home/deokho/nnstreamer-example/native/example_object_detection_tensorflow/nnstreamer-gstreamer/nntest333 [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1". [New Thread 0x7fffe9e8c700 (LWP 17541)] [New Thread 0x7fffe8931700 (LWP 17542)] [Thread 0x7fffe8931700 (LWP 17542) exited] 2020-03-20 17:36:16.897046: I tensorflow/core/platform/cpu_feature_guard.cc:141] Your CPU supports instructions that this TensorFlow binary was not compiled to use: SSE4.1 SSE4.2 AVX AVX2 FMA [New Thread 0x7fffe8931700 (LWP 17543)] [New Thread 0x7fffeb18a700 (LWP 17544)] [New Thread 0x7fffea989700 (LWP 17545)] [New Thread 0x7fffe968b700 (LWP 17546)] [New Thread 0x7fffe3aa9700 (LWP 17547)] [New Thread 0x7fffe32a8700 (LWP 17548)] [New Thread 0x7fffe2aa7700 (LWP 17549)] [New Thread 0x7fffe22a6700 (LWP 17550)] [New Thread 0x7fffe1aa5700 (LWP 17551)] [New Thread 0x7fffe12a4700 (LWP 17552)] [New Thread 0x7fffe0aa3700 (LWP 17553)] [New Thread 0x7fffb7fff700 (LWP 17554)] [New Thread 0x7fffb77fe700 (LWP 17555)] [New Thread 0x7fffb6ffd700 (LWP 17556)] [New Thread 0x7fffb67fc700 (LWP 17557)] [New Thread 0x7fffb5ffb700 (LWP 17558)] [New Thread 0x7fffb57fa700 (LWP 17559)] [New Thread 0x7fffb4ff9700 (LWP 17560)] [New Thread 0x7fff93fff700 (LWP 17561)] [New Thread 0x7fff937fe700 (LWP 17562)] data_point/0000000000.txt number of point cnt=120574 data_point/0000000001.txt [New Thread 0x7fff92ffd700 (LWP 17563)] [Thread 0x7fff92ffd700 (LWP 17563) exited] number of point cnt=120831 data_point/0000000002.txt number of point cnt=121015

Thread 23 "src:src" received signal SIGSEGV, Segmentation fault. [Switching to Thread 0x7fff937fe700 (LWP 17562)] 0x00007ffff7615996 in ?? () from /usr/lib/x86_64-linux-gnu/libgstapp-1.0.so.0


- sudo 권한 안줬을 때

(nntest333:17508): GLib-CRITICAL **: 17:34:42.543: g_file_test: assertion 'filename != NULL' failed

Program received signal SIGSEGV, Segmentation fault. 0x00007ffff6da5580 in g_str_hash () from /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0 (gdb) run The program being debugged has been started already. Start it from the beginning? (y or n) y Starting program: /home/deokho/nnstreamer-example/native/example_object_detection_tensorflow/nnstreamer-gstreamer/nntest333 [Thread debugging using libthread_db enabled] Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".

(nntest333:17517): GLib-CRITICAL **: 17:34:50.126: g_file_test: assertion 'filename != NULL' failed

Program received signal SIGSEGV, Segmentation fault. 0x00007ffff6da5580 in g_str_hash () from /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0



현재까지 위 내용을 토대로 모르는 것을 이것 저것 찾아 보았지만 아직 정리가 안되어 정리 후 작성 하겠습니다.
ddeokho commented 4 years ago
  1. 권한 이슈 아직 해결 못함 -> 시간이 많지 않기 때문에 우선 sudo 권한으로 구동시키려고함.

  2. Segmentation fault -> 해결 Thread 23 "src:src" received signal SIGSEGV, Segmentation fault.

소스 패드로 들어가는 소스 확인(2D projection). 지정한 frame의 크기를 넘겨 들어오는 데이터 확인. -> 수정(코드 커밋)

Screenshot from 2020-03-21 12-31-00

gdb를 안 것이 매우 유용했음.(gstreamer로만 구현했던 코드와 다른 부분은 없었음. 변경이 있었다면 gcc컴파일러에서 g++로 컴파일러가 변경 된건데 그럴 수 있는 건가?)

  1. 고민 현재 2D projection의 view는 python을 이용해 구현한 것(아래 사진 2개)과 차이가 있음(배열은 같음). python으로 구현한 것 처럼 보여줄 수는 없을까 고민.. 이게 안되면 좋은 스코어가 나올 수 있을지 의문..

-2D projection Screenshot from 2020-01-31 19-35-15

-확대 본 Screenshot from 2020-01-31 19-50-05