Jetson Nano 使用 opencv庫

學習github上的庫:https://github.com/JetsonHacksNano/CSI-Camera

 

編譯的時候出了問題:

gs@nano:~/02_github/CSI-Camera$ python simple_camera.py
nvarguscamerasrc ! video/x-raw(memory:NVMM), width=(int)1280, height=(int)720, format=(string)NV12, framerate=(fraction)60/1 ! nvvidconv flip-method=0 ! video/x-raw, width=(int)1280, height=(int)720, format=(string)BGRx ! videoconvert ! video/x-raw, format=(string)BGR ! appsink
GST_ARGUS: Creating output stream
CONSUMER: Waiting until producer is connected...
GST_ARGUS: Available Sensor modes :
GST_ARGUS: 3264 x 2464 FR = 21.000000 fps Duration = 47619048 ; Analog Gain range min 1.000000, max 10.625000; Exposure Range min 13000, max 683709000;

GST_ARGUS: 3264 x 1848 FR = 28.000001 fps Duration = 35714284 ; Analog Gain range min 1.000000, max 10.625000; Exposure Range min 13000, max 683709000;

GST_ARGUS: 1920 x 1080 FR = 29.999999 fps Duration = 33333334 ; Analog Gain range min 1.000000, max 10.625000; Exposure Range min 13000, max 683709000;

GST_ARGUS: 1280 x 720 FR = 59.999999 fps Duration = 16666667 ; Analog Gain range min 1.000000, max 10.625000; Exposure Range min 13000, max 683709000;

GST_ARGUS: 1280 x 720 FR = 120.000005 fps Duration = 8333333 ; Analog Gain range min 1.000000, max 10.625000; Exposure Range min 13000, max 683709000;

GST_ARGUS: Running with following settings:
   Camera index = 0 
   Camera mode  = 4 
   Output Stream W = 1280 H = 720 
   seconds to Run    = 0 
   Frame Rate = 120.000005 
GST_ARGUS: PowerService: requested_clock_Hz=12096000
GST_ARGUS: Setup Complete, Starting captures for 0 seconds
GST_ARGUS: Starting repeat capture requests.
CONSUMER: Producer has connected; continuing.
Gtk-Message: 18:11:44.084: Failed to load module "canberra-gtk-module"
Traceback (most recent call last):
  File "simple_camera.py", line 66, in <module>
    show_camera()
  File "simple_camera.py", line 51, in show_camera
    while cv2.getWindowProperty("CSI Camera", 0) >= 0:
cv2.error: OpenCV(4.1.0) /home/gs/02_github/nano_build_opencv/opencv/modules/highgui/src/window_gtk.cpp:755: error: (-27:Null pointer) NULL window in function 'cvGetModeWindow_GTK'

GST_ARGUS: Cleaning up

(python:11318): GStreamer-CRITICAL **: 18:14:16.624: gst_mini_object_set_qdata: assertion 'object != NULL' failed
CONSUMER: Done Success
GST_ARGUS: Done Success
GST_ARGUS: 
PowerServiceHwVic::cleanupResources
gs@nano:~/02_github/CSI-Camera$ 

查看源碼:simple_camera.py,源碼中的目錄是“/usr/share/Opencv/..”,而我本地不是這個目錄,因此修改如下:

    face_cascade = cv2.CascadeClassifier(
        "/usr/share/opencv4/haarcascades/haarcascade_frontalface_default.xml"
    )
    eye_cascade = cv2.CascadeClassifier(
        "/usr/share/opencv4/haarcascades/haarcascade_eye.xml"
    )
    cap = cv2.VideoCapture(gstreamer_pipeline(), cv2.CAP_GSTREAMER)

再次運行命令:python face_detect.py        則,成功!

but...,有出現錯誤了:

Gtk-Message: 18:28:10.809: Failed to load module "canberra-gtk-module"

運行下面的命令:

sudo apt install libcanberra-gtk-module
sudo apt-get install libcanberra-gtk-module

 在運行下面的這個命令時,又出錯了:

gs@nano:~/02_github/CSI-Camera$ g++ -std=c++11 -Wall -I/usr/lib/opencv simple_camera.cpp -L/usr/lib -lopencv_core -lopencv_highgui -lopencv_videoio -o simple_camera
simple_camera.cpp:10:10: fatal error: opencv2/opencv.hpp: No such file or directory
 #include <opencv2/opencv.hpp>
          ^~~~~~~~~~~~~~~~~~~~
compilation terminated.

使用查找命令:

gs@nano:/usr$ find -name opencv.hpp
./include/opencv4/opencv2/opencv.hpp
./local/include/opencv4/opencv2/opencv.hpp
gs@nano:/usr$ 

得知,我們的庫文件目錄與命令行中的不一樣,於是修改命令中的庫文件路經“-I/usr/include/opencv4”,如下:

gs@nano:~/02_github/CSI-Camera$ g++ -std=c++11 -Wall -I/usr/include/opencv4 simple_camera.cpp -L/usr/lib -lopencv_core -lopencv_highgui -lopencv_videoio -o simple_camera
gs@nano:~/02_github/CSI-Camera$

(這一次沒有出現問題了......)

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章