diff --git a/CMakeLists.txt b/CMakeLists.txt index 0a0a2d2..46b90d2 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -22,6 +22,8 @@ else() add_definitions(-DPLATFORM_X86_CUDA) option(USE_CUDA "BUILD WITH CUDA." ON) option(USE_FFMPEG "BUILD WITH FFMPEG." ON) + elseif(PLATFORM STREQUAL "X86_INTEL") + option(USE_FFMPEG "BUILD WITH FFMPEG." ON) else() message(FATAL_ERROR "UNSUPPORTED PLATFORM!") endif() @@ -228,7 +230,7 @@ if(USE_CUDA) cuda_add_executable(SpireCVSeg samples/SpireCVSeg.cpp ${YOLO_SRCS}) target_link_libraries(SpireCVSeg sv_world) -elseif(PLATFORM STREQUAL "X86_CPU") +elseif(PLATFORM STREQUAL "X86_INTEL") add_library(sv_world SHARED ${spirecv_SRCS}) target_link_libraries( sv_world ${OpenCV_LIBS} @@ -274,6 +276,9 @@ target_link_libraries(GimbalLandingMarkerDetection sv_world) add_executable(GimbalUdpDetectionInfoSender samples/demo/gimbal_udp_detection_info_sender.cpp) target_link_libraries(GimbalUdpDetectionInfoSender sv_world) +add_executable(EvalFpsOnVideo samples/test/eval_fps_on_video.cpp) +target_link_libraries(EvalFpsOnVideo sv_world) + include_directories(${CMAKE_CURRENT_SOURCE_DIR}/samples/calib) add_executable(CameraCalibrarion samples/calib/calibrate_camera_charuco.cpp) target_link_libraries(CameraCalibrarion ${OpenCV_LIBS}) @@ -294,7 +299,7 @@ if(USE_CUDA) install(TARGETS SpireCVDet SpireCVSeg RUNTIME DESTINATION bin ) -elseif(PLATFORM STREQUAL "X86_CPU") +elseif(PLATFORM STREQUAL "X86_INTEL") install(TARGETS sv_world LIBRARY DESTINATION lib ) @@ -350,7 +355,7 @@ set(SV_LIBRARIES @FFMPEG_LIBS@ fmt ) ]]) -elseif(PLATFORM STREQUAL "X86_CPU") +elseif(PLATFORM STREQUAL "X86_INTEL") file(WRITE ${CMAKE_CURRENT_BINARY_DIR}/build/${PROJECT_NAME}Config.cmake.in [[ @PACKAGE_INIT@ find_package(OpenCV 4 REQUIRED) diff --git a/algorithm/common_det/sv_common_det.cpp b/algorithm/common_det/sv_common_det.cpp index d1c5853..3a540ca 100644 --- a/algorithm/common_det/sv_common_det.cpp +++ b/algorithm/common_det/sv_common_det.cpp @@ -14,7 +14,9 @@ namespace sv { CommonObjectDetector::CommonObjectDetector() { +#ifdef WITH_CUDA this->_cuda_impl = new CommonObjectDetectorCUDAImpl; +#endif } CommonObjectDetector::~CommonObjectDetector() { diff --git a/algorithm/landing_det/sv_landing_det.cpp b/algorithm/landing_det/sv_landing_det.cpp index dd0f732..58264fb 100644 --- a/algorithm/landing_det/sv_landing_det.cpp +++ b/algorithm/landing_det/sv_landing_det.cpp @@ -13,7 +13,9 @@ namespace sv { LandingMarkerDetector::LandingMarkerDetector() { +#ifdef WITH_CUDA this->_cuda_impl = new LandingMarkerDetectorCUDAImpl; +#endif } LandingMarkerDetector::~LandingMarkerDetector() { diff --git a/build_on_x86_intel.sh b/build_on_x86_intel.sh new file mode 100755 index 0000000..d8132eb --- /dev/null +++ b/build_on_x86_intel.sh @@ -0,0 +1,9 @@ +#!/bin/bash -e + +rm -rf build +mkdir build +cd build +cmake .. -DPLATFORM=X86_INTEL +make -j4 +sudo make install + diff --git a/samples/test/eval_fps_on_video.cpp b/samples/test/eval_fps_on_video.cpp new file mode 100644 index 0000000..a1e7af3 --- /dev/null +++ b/samples/test/eval_fps_on_video.cpp @@ -0,0 +1,171 @@ +#include +#include +// 包含SpireCV SDK头文件 +#include +#include + +using namespace std; + +int main(int argc, char *argv[]) { + if (argc != 4) return false; + std::string video_fn = std::string(argv[1]); + std::string camera_yaml_fn = std::string(argv[2]); + std::string algorithm = std::string(argv[3]); + // 1: ArucoDetector + // 2: LandingMarkerDetector + // 3: EllipseDetector + // 41: CommonObjectDetector 640 without mask + // 42: CommonObjectDetector 1280 without mask + // 43: CommonObjectDetector 640 with mask + // 51: SingleObjectTracker CSRT + // 52: SingleObjectTracker KCF + // 53: SingleObjectTracker SiamPRN + // 54: SingleObjectTracker Nano + + cv::VideoCapture cap(video_fn); + int fcount = cap.get(cv::CAP_PROP_FRAME_COUNT); + fcount = std::min(5000, fcount); + + cv::Mat img; + std::vector imgs; + int frame_id = 0; + for (int i=0; i(end - start).count() / 1000. + 1e-4) << std::endl; + + + return 0; +} diff --git a/scripts/test/test_fps.sh b/scripts/test/test_fps.sh new file mode 100755 index 0000000..1e34932 --- /dev/null +++ b/scripts/test/test_fps.sh @@ -0,0 +1,45 @@ +#!/bin/bash -e + +if [ ! -d build ]; then + mkdir build +fi + +cd build + +cmake .. +make -j + +./EvalFpsOnVideo ${HOME}/SpireCV/test/tracking_640x480.mp4 ${HOME}/SpireCV/calib_webcam_640x480.yaml 51 +./EvalFpsOnVideo ${HOME}/SpireCV/test/tracking_1280x720.mp4 ${HOME}/SpireCV/calib_webcam_1280x720.yaml 51 +./EvalFpsOnVideo ${HOME}/SpireCV/test/tracking_1280x720.mp4 ${HOME}/SpireCV/calib_webcam_1920x1080.yaml 51 + +./EvalFpsOnVideo ${HOME}/SpireCV/test/tracking_640x480.mp4 ${HOME}/SpireCV/calib_webcam_640x480.yaml 52 +./EvalFpsOnVideo ${HOME}/SpireCV/test/tracking_1280x720.mp4 ${HOME}/SpireCV/calib_webcam_1280x720.yaml 52 +./EvalFpsOnVideo ${HOME}/SpireCV/test/tracking_1280x720.mp4 ${HOME}/SpireCV/calib_webcam_1920x1080.yaml 52 + +./EvalFpsOnVideo ${HOME}/SpireCV/test/tracking_640x480.mp4 ${HOME}/SpireCV/calib_webcam_640x480.yaml 54 +./EvalFpsOnVideo ${HOME}/SpireCV/test/tracking_1280x720.mp4 ${HOME}/SpireCV/calib_webcam_1280x720.yaml 54 +./EvalFpsOnVideo ${HOME}/SpireCV/test/tracking_1280x720.mp4 ${HOME}/SpireCV/calib_webcam_1920x1080.yaml 54 + +./EvalFpsOnVideo ${HOME}/SpireCV/test/drone_640x480.mp4 ${HOME}/SpireCV/calib_webcam_640x480.yaml 41 +./EvalFpsOnVideo ${HOME}/SpireCV/test/drone_1280x720.mp4 ${HOME}/SpireCV/calib_webcam_1280x720.yaml 41 +./EvalFpsOnVideo ${HOME}/SpireCV/test/drone_1280x720.mp4 ${HOME}/SpireCV/calib_webcam_1920x1080.yaml 41 + +./EvalFpsOnVideo ${HOME}/SpireCV/test/drone_640x480.mp4 ${HOME}/SpireCV/calib_webcam_640x480.yaml 42 +./EvalFpsOnVideo ${HOME}/SpireCV/test/drone_1280x720.mp4 ${HOME}/SpireCV/calib_webcam_1280x720.yaml 42 +./EvalFpsOnVideo ${HOME}/SpireCV/test/drone_1280x720.mp4 ${HOME}/SpireCV/calib_webcam_1920x1080.yaml 42 + +./EvalFpsOnVideo ${HOME}/SpireCV/test/drone_640x480.mp4 ${HOME}/SpireCV/calib_webcam_640x480.yaml 43 +./EvalFpsOnVideo ${HOME}/SpireCV/test/drone_1280x720.mp4 ${HOME}/SpireCV/calib_webcam_1280x720.yaml 43 +./EvalFpsOnVideo ${HOME}/SpireCV/test/drone_1280x720.mp4 ${HOME}/SpireCV/calib_webcam_1920x1080.yaml 43 + +./EvalFpsOnVideo ${HOME}/SpireCV/test/aruco_640x480.mp4 ${HOME}/SpireCV/calib_webcam_640x480.yaml 1 +./EvalFpsOnVideo ${HOME}/SpireCV/test/aruco_1280x720.mp4 ${HOME}/SpireCV/calib_webcam_1280x720.yaml 1 +./EvalFpsOnVideo ${HOME}/SpireCV/test/aruco_1280x720.mp4 ${HOME}/SpireCV/calib_webcam_1920x1080.yaml 1 + +./EvalFpsOnVideo ${HOME}/SpireCV/test/landing_640x480.mp4 ${HOME}/SpireCV/calib_webcam_640x480.yaml 2 +./EvalFpsOnVideo ${HOME}/SpireCV/test/landing_1280x720.mp4 ${HOME}/SpireCV/calib_webcam_1280x720.yaml 2 + +./EvalFpsOnVideo ${HOME}/SpireCV/test/ellipse_640x480.mp4 ${HOME}/SpireCV/calib_webcam_640x480.yaml 3 +./EvalFpsOnVideo ${HOME}/SpireCV/test/ellipse_1280x720.mp4 ${HOME}/SpireCV/calib_webcam_1280x720.yaml 3 +