Skip to content

利用opencv3.4.12实现多张图片的全景拼接,具体执行步骤参考项目中的readme.txt

Notifications You must be signed in to change notification settings

Sandy6Zhou/opencv_panoramic_stitching

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

arm架构下编译opencv:
/home/zsd/workspace/opencv3.4.12/opencv-3.4.12/arm-gnueabihf.toolchain.cmake内容:
set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR arm)

set(CMAKE_C_FLAGS_DEBUG "" CACHE STRING "Debug CFLAGS")
set(CMAKE_CXX_FLAGS_DEBUG "" CACHE STRING "Debug CXXFLAGS")
set(CMAKE_C_FLAGS_RELEASE " -DNDEBUG" CACHE STRING "Release CFLAGS")#不加入调试信息,进一步缩小体积
set(CMAKE_CXX_FLAGS_RELEASE " -DNDEBUG" CACHE STRING "Release CXXFLAGS")#不加入调试信息,进一步缩小体积

set(CMAKE_C_COMPILER "/home/zsd/workspace/rv1109_dual_sc530ai/project/prebuilts/gcc/linux-x86/arm/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc")
set(CMAKE_CXX_COMPILER "/home/zsd/workspace/rv1109_dual_sc530ai/project/prebuilts/gcc/linux-x86/arm/gcc-arm-8.3-2019.03-x86_64-arm-linux-gnueabihf/bin/arm-linux-gnueabihf-g++")

set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
 
#set(CMAKE_C_FLAGS "-march=armv7-a -mfloat-abi=hard -mfpu=neon")
#set(CMAKE_CXX_FLAGS "-march=armv7-a -mfloat-abi=hard -mfpu=neon")
 
set(CMAKE_C_FLAGS "-march=armv7-a -mfloat-abi=hard -mfpu=neon -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -Os -DUSE_UPDATEENGINE=ON -DSUCCESSFUL_BOOT=ON" CACHE STRING "ARM CFLAGS")#-Os减小目标文件体积
set(CMAKE_CXX_FLAGS "-march=armv7-a -mfloat-abi=hard -mfpu=neon -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -Os -DUSE_UPDATEENGINE=ON -DSUCCESSFUL_BOOT=ON" CACHE STRING "ARM CXXFLAGS")#-Os减小目标文件体积

# cache flags
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}" CACHE STRING "c flags")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}" CACHE STRING "c++ flags")


/home/zsd/workspace/opencv3.4.12/opencv-3.4.12/build_arm/make.sh:(相比于教程新增-DOPENCV_ENABLE_NONFREE=ON同时参考buildroot中opencv3的编译选项进行裁剪)
cmake -DCMAKE_TOOLCHAIN_FILE=../arm-linux-gnueabihf.toolchain.cmake \
-DCMAKE_INSTALL_PREFIX=./install_arm \
-DCMAKE_BUILD_TYPE=RELEASE -DOPENCV_ENABLE_NONFREE=ON \
-DBUILD_LIST=calib3d,core,features2d,flann,imgcodecs,imgproc,xfeatures2d \
-DOPENCV_EXTRA_MODULES_PATH=../opencv_contrib-3.4.12/modules/xfeatures2d \
-DBUILD_CUDA_STUBS=OFF -DBUILD_DOCS=OFF -DBUILD_EXAMPLES=OFF -DBUILD_JASPER=OFF -DBUILD_JPEG=OFF -DBUILD_OPENEXR=OFF -DBUILD_PACKAGE=OFF -DBUILD_PERF_TESTS=OFF -DBUILD_PNG=OFF -DBUILD_SHARED_LIBS=ON -DBUILD_TBB=OFF -DBUILD_TESTS=OFF -DBUILD_TIFF=OFF -DBUILD_WITH_DEBUG_INFO=OFF -DBUILD_WITH_DYNAMIC_IPP=OFF -DBUILD_ZLIB=OFF -DBUILD_JAVA=OFF -DBUILD_WITH_STATIC_CRT=OFF -DBUILD_opencv_androidcamera=OFF -DBUILD_opencv_cudaarithm=OFF -DBUILD_opencv_cudabgsegm=OFF -DBUILD_opencv_cudacodec=OFF -DBUILD_opencv_cudafeatures2d=OFF -DBUILD_opencv_cudafilters=OFF -DBUILD_opencv_cudaimgproc=OFF -DBUILD_opencv_cudalegacy=OFF -DBUILD_opencv_cudaobjdetect=OFF -DBUILD_opencv_cudaoptflow=OFF -DBUILD_opencv_cudastereo=OFF -DBUILD_opencv_cudawarping=OFF -DBUILD_opencv_cudev=OFF -DBUILD_ANDROID_CAMERA_WRAPPER=OFF -DBUILD_ANDROID_EXAMPLES=OFF -DBUILD_ANDROID_SERVICE=OFF -DBUILD_FAT_JAVA_LIB=OFF -DBUILD_PROTOBUF=OFF \
-DCMAKE_COLOR_MAKEFILE=OFF -DCMAKE_SKIP_RPATH=OFF -DCMAKE_INSTALL_RPATH_USE_LINK_PATH=OFF -DCMAKE_USE_RELATIVE_PATHS=OFF \
-DENABLE_NEON=ON -DENABLE_VFPV3=ON -DENABLE_VFPV4=ON -DENABLE_CCACHE=OFF -DENABLE_AVX=OFF -DENABLE_AVX2=OFF -DENABLE_COVERAGE=OFF -DENABLE_FAST_MATH=OFF -DENABLE_FMA3=OFF -DENABLE_IMPL_COLLECTION=OFF -DENABLE_INSTRUMENTATION=OFF -DENABLE_NOISY_WARNINGS=OFF -DENABLE_OMIT_FRAME_POINTER=OFF -DENABLE_POPCNT=OFF -DENABLE_PRECOMPILED_HEADERS=OFF -DENABLE_PROFILING=OFF -DENABLE_SOLUTION_FOLDERS=OFF -DENABLE_POWERPC=OFF \
-DWITH_1394=OFF -DWITH_CLP=OFF -DWITH_CSTRIPES=OFF -DWITH_CUBLAS=OFF -DWITH_CUDA=OFF -DWITH_CUFFT=OFF -DWITH_DIRECTX=OFF -DWITH_DSHOW=OFF -DWITH_EIGEN=OFF -DWITH_FFMPEG=OFF -DWITH_GDAL=OFF -DWITH_GDCM=OFF -DWITH_GIGEAPI=OFF -DWITH_GSTREAMER=OFF -DWITH_GSTREAMER_0_10=OFF -DWITH_INTELPERC=OFF -DWITH_IPP=OFF -DWITH_IPP_A=OFF -DWITH_JASPER=OFF -DWITH_JPEG=ON -DWITH_LAPACK=OFF -DWITH_MATLAB=OFF -DWITH_MSMF=OFF -DWITH_NVCUVID=OFF -DWITH_OPENCL=OFF -DWITH_OPENCLAMDBLAS=OFF -DWITH_OPENCLAMDFFT=OFF -DWITH_OPENCL_SVM=OFF -DWITH_OPENEXR=OFF -DWITH_OPENGL=OFF -DWITH_OPENMP=OFF -DWITH_OPENNI=OFF -DWITH_OPENNI2=OFF -DWITH_OPENVX=OFF -DWITH_PNG=OFF -DWITH_PTHREADS_PF=OFF -DWITH_PVAPI=OFF -DWITH_QT=OFF -DWITH_TBB=OFF -DWITH_TIFF=OFF -DWITH_VFW=OFF -DWITH_VTK=OFF -DWITH_WEBP=OFF -DWITH_WIN32UI=OFF -DWITH_XIMEA=OFF -DWITH_OPENJPEG=OFF -DWITH_ANDROID_CAMERA=OFF -DWITH_AVFOUNDATION=OFF -DWITH_CARBON=OFF -DWITH_QUICKTIME=OFF -DWITH_VIDEOINPUT=OFF -DWITH_GPHOTO2=OFF -DWITH_UNICAP=OFF -DWITH_VA=OFF -DWITH_VA_INTEL=OFF -DWITH_XINE=OFF -DWITH_GTK=OFF -DWITH_PROTOBUF=OFF -DWITH_V4L=OFF -DWITH_LIBV4L=OFF \
-DINSTALL_C_EXAMPLES=OFF -DINSTALL_TEST=OFF -DINSTALL_PYTHON_EXAMPLES=OFF -DINSTALL_CREATE_DISTRIB=OFF -DINSTALL_ANDROID_EXAMPLES=OFF -DINSTALL_TO_MANGLED_PATHS=OFF -DWITH_GTK_2_X=OFF \
-DOPENCV_WARNINGS_ARE_ERRORS=OFF -DDOWNLOAD_EXTERNAL_TEST_DATA=OFF -DOPENCV_ENABLE_PKG_CONFIG=OFF ..

若执行make.sh失败,则将build_arm文件夹删掉重新创建一个编译
将安装目录install_arm下的lib和include移植到opencv_test中
编译应用命令:
arm-linux-gnueabihf-g++ main.cpp Panorama.cpp cropper.cpp -o main -I./ -I./include/ -L./lib -lopencv_core -lopencv_features2d -lopencv_flann -lopencv_imgcodecs -lopencv_imgproc -lopencv_xfeatures2d 
执行./main arg1 arg2 arg3即可生成结果result.jpg图片,arg1表示几张图片,arg2表示算法阈值,arg3表示摄像头是否是倒装拍照的,正向拍照图片顺序是从左到右,倒装拍照图片顺序是从右到左

------------------------------------------------------------------------------------

ubuntu下编译opencv:参考https://blog.csdn.net/lu_linux/article/details/131113812

/home/zsd/workspace/opencv3.4.12/opencv-3.4.12/linux-gnueabihf.toolchain.cmake内容:
set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR x86_64)

set(CMAKE_C_FLAGS_DEBUG "" CACHE STRING "Debug CFLAGS")
set(CMAKE_CXX_FLAGS_DEBUG "" CACHE STRING "Debug CXXFLAGS")
set(CMAKE_C_FLAGS_RELEASE " -DNDEBUG" CACHE STRING "Release CFLAGS")#不加入调试信息,进一步缩小体积
set(CMAKE_CXX_FLAGS_RELEASE " -DNDEBUG" CACHE STRING "Release CXXFLAGS")#不加入调试信息,进一步缩小体积

set(CMAKE_C_COMPILER "/usr/bin/gcc")
set(CMAKE_CXX_COMPILER "/usr/bin/g++")

set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)

#set(CMAKE_C_FLAGS "-march=native -pipe")
#set(CMAKE_CXX_FLAGS "-march=native -pipe")

set(CMAKE_C_FLAGS "-march=native -pipe -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -Os -DUSE_UPDATEENGINE=ON -DSUCCESSFUL_BOOT=ON" CACHE STRING "x86 CFLAGS")#-Os减小目标文件体积
set(CMAKE_CXX_FLAGS "-march=native -pipe -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -Os -DUSE_UPDATEENGINE=ON -DSUCCESSFUL_BOOT=ON" CACHE STRING "x86 CXXFLAGS")#-Os减小目标文件体积

# cache flags
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS}" CACHE STRING "c flags")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}" CACHE STRING "c++ flags")


/home/zsd/workspace/opencv3.4.12/opencv-3.4.12/build_x86/make.sh内容:
cmake -DCMAKE_TOOLCHAIN_FILE=../linux-gnueabihf.toolchain.cmake \
-DCMAKE_INSTALL_PREFIX=./install_x86 \
-DCMAKE_BUILD_TYPE=RELEASE -DOPENCV_ENABLE_NONFREE=ON \
-DBUILD_LIST=calib3d,core,features2d,flann,imgcodecs,imgproc,xfeatures2d \
-DOPENCV_EXTRA_MODULES_PATH=../opencv_contrib-3.4.12/modules/xfeatures2d \
-DBUILD_CUDA_STUBS=OFF -DBUILD_DOCS=OFF -DBUILD_EXAMPLES=OFF -DBUILD_JASPER=OFF -DBUILD_JPEG=OFF -DBUILD_OPENEXR=OFF -DBUILD_PACKAGE=OFF -DBUILD_PERF_TESTS=OFF -DBUILD_PNG=OFF -DBUILD_SHARED_LIBS=ON -DBUILD_TBB=OFF -DBUILD_TESTS=OFF -DBUILD_TIFF=OFF -DBUILD_WITH_DEBUG_INFO=OFF -DBUILD_WITH_DYNAMIC_IPP=OFF -DBUILD_ZLIB=OFF -DBUILD_JAVA=OFF -DBUILD_WITH_STATIC_CRT=OFF -DBUILD_opencv_androidcamera=OFF -DBUILD_opencv_cudaarithm=OFF -DBUILD_opencv_cudabgsegm=OFF -DBUILD_opencv_cudacodec=OFF -DBUILD_opencv_cudafeatures2d=OFF -DBUILD_opencv_cudafilters=OFF -DBUILD_opencv_cudaimgproc=OFF -DBUILD_opencv_cudalegacy=OFF -DBUILD_opencv_cudaobjdetect=OFF -DBUILD_opencv_cudaoptflow=OFF -DBUILD_opencv_cudastereo=OFF -DBUILD_opencv_cudawarping=OFF -DBUILD_opencv_cudev=OFF -DBUILD_ANDROID_CAMERA_WRAPPER=OFF -DBUILD_ANDROID_EXAMPLES=OFF -DBUILD_ANDROID_SERVICE=OFF -DBUILD_FAT_JAVA_LIB=OFF -DBUILD_PROTOBUF=OFF \
-DCMAKE_COLOR_MAKEFILE=OFF -DCMAKE_SKIP_RPATH=OFF -DCMAKE_INSTALL_RPATH_USE_LINK_PATH=OFF -DCMAKE_USE_RELATIVE_PATHS=OFF \
-DENABLE_NEON=OFF -DENABLE_VFPV3=OFF -DENABLE_VFPV4=ON -DENABLE_CCACHE=OFF -DENABLE_AVX=OFF -DENABLE_AVX2=OFF -DENABLE_COVERAGE=OFF -DENABLE_FAST_MATH=ON -DENABLE_FMA3=OFF -DENABLE_IMPL_COLLECTION=OFF -DENABLE_INSTRUMENTATION=OFF -DENABLE_NOISY_WARNINGS=OFF -DENABLE_OMIT_FRAME_POINTER=OFF -DENABLE_POPCNT=OFF -DENABLE_PRECOMPILED_HEADERS=OFF -DENABLE_PROFILING=OFF -DENABLE_SOLUTION_FOLDERS=OFF -DENABLE_POWERPC=OFF \
-DWITH_1394=OFF -DWITH_CLP=OFF -DWITH_CSTRIPES=OFF -DWITH_CUBLAS=OFF -DWITH_CUDA=OFF -DWITH_CUFFT=OFF -DWITH_DIRECTX=OFF -DWITH_DSHOW=OFF -DWITH_EIGEN=OFF -DWITH_FFMPEG=OFF -DWITH_GDAL=OFF -DWITH_GDCM=OFF -DWITH_GIGEAPI=OFF -DWITH_GSTREAMER=OFF -DWITH_GSTREAMER_0_10=OFF -DWITH_INTELPERC=OFF -DWITH_IPP=OFF -DWITH_IPP_A=OFF -DWITH_JASPER=OFF -DWITH_JPEG=ON -DWITH_LAPACK=OFF -DWITH_MATLAB=OFF -DWITH_MSMF=OFF -DWITH_NVCUVID=OFF -DWITH_OPENCL=OFF -DWITH_OPENCLAMDBLAS=OFF -DWITH_OPENCLAMDFFT=OFF -DWITH_OPENCL_SVM=OFF -DWITH_OPENEXR=OFF -DWITH_OPENGL=OFF -DWITH_OPENMP=OFF -DWITH_OPENNI=OFF -DWITH_OPENNI2=OFF -DWITH_OPENVX=OFF -DWITH_PNG=OFF -DWITH_PTHREADS_PF=OFF -DWITH_PVAPI=OFF -DWITH_QT=OFF -DWITH_TBB=OFF -DWITH_TIFF=OFF -DWITH_VFW=OFF -DWITH_VTK=OFF -DWITH_WEBP=OFF -DWITH_WIN32UI=OFF -DWITH_XIMEA=OFF -DWITH_OPENJPEG=OFF -DWITH_ANDROID_CAMERA=OFF -DWITH_AVFOUNDATION=OFF -DWITH_CARBON=OFF -DWITH_QUICKTIME=OFF -DWITH_VIDEOINPUT=OFF -DWITH_GPHOTO2=OFF -DWITH_UNICAP=OFF -DWITH_VA=OFF -DWITH_VA_INTEL=OFF -DWITH_XINE=OFF -DWITH_GTK=OFF -DWITH_PROTOBUF=OFF -DWITH_V4L=OFF -DWITH_LIBV4L=OFF \
-DINSTALL_C_EXAMPLES=OFF -DINSTALL_TEST=OFF -DINSTALL_PYTHON_EXAMPLES=OFF -DINSTALL_CREATE_DISTRIB=OFF -DINSTALL_ANDROID_EXAMPLES=OFF -DINSTALL_TO_MANGLED_PATHS=OFF -DWITH_GTK_2_X=OFF \
-DOPENCV_WARNINGS_ARE_ERRORS=OFF -DDOWNLOAD_EXTERNAL_TEST_DATA=OFF -DOPENCV_ENABLE_PKG_CONFIG=OFF ..

1.将安装目录install_x86下的lib和include移植到opencv_test中,在命令行中加载动态库路径(目的是在ubuntu下运行opencv应用程序时,能链接到动态库):
export LD_LIBRARY_PATH=$PWD/lib:$LD_LIBRARY_PATH
2.编译应用命令只需执行本目录下的makefile文件即可:make,清除中间文件使用make clean

执行./main arg1 arg2 arg3即可生成结果result.jpg图片,arg1表示几张图片,arg2表示算法阈值,arg3表示摄像头是否是倒装拍照的,正向拍照图片顺序是从左到右,倒装拍照图片顺序是从右到左
本例程中用的是10张照片,用法./main 10 500 0		(其中第三个参数0,表示摄像头正向拍照,图像顺序是从左到右)
例程中默认image中的图片是正向拍照(从左到右),image_1是倒装拍照(从右到左)

About

利用opencv3.4.12实现多张图片的全景拼接,具体执行步骤参考项目中的readme.txt

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages