日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

图像处理库(fbc_cv):源自OpenCV代码提取

發(fā)布時間:2023/11/27 生活经验 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 图像处理库(fbc_cv):源自OpenCV代码提取 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

在實際項目中會經(jīng)常用到一些基本的圖像處理操作,而且經(jīng)常拿OpenCV進(jìn)行結(jié)果對比,因此這里從OpenCV中提取了一些代碼組織成fbc_cv庫。項目fbc_cv所有的代碼已放到GitHub中,地址為 ?https://github.com/fengbingchun/OpenCV_Test?,它不依賴任何第三方庫,目前包含的算法有:resize, cvtColor, merge, split, remap, warpAffine, rotate, warpPerspective, dilate, erode, morphologyEx, threshold, transpose, flip, dft, idft,后面還會再增加一些。也會將一些算法改為CUDA實現(xiàn),地址為:https://github.com/fengbingchun/CUDA_Test.? fbc_cv庫對應(yīng)對應(yīng)的OpenCV版本為3.1。目前已添加的這些算法與OpenCV 3.1的結(jié)果完全一致

在編譯OpenCV 3.1源碼時有一些注意事項:

(1). 在用CMake編譯時,關(guān)閉OpenCL, CUDA, OpenMP, TBB, SIMD選項;

(2). 調(diào)整源碼中modules/core/include/opencv2/core/cvdef.h文件,將第167行改為: #if ?0

(3). 調(diào)整源碼中modules/core/include/opencv2/core/fast_math.hpp文件,使其cvFound/cvFloor/cvCeil/cvRound函數(shù)執(zhí)行最后的判斷條件。

fbc_cv庫既支持在Windows7/10上vs2013編譯,也支持在Linux上通過CMake編譯,而且兩個平臺上的結(jié)果都與OpenCV 3.1是一致的

vs2013工程截圖如下:

Ubuntu 14.04上編譯fbc_cv:

build.sh文件內(nèi)容如下:

#! /bin/bashbuild_mode=release
if [ $# == 1 ]; thenbuild_mode=debug
fi
echo "build mode: ${build_mode}"real_path=$(realpath $0)
dir_name=`dirname "${real_path}"`
echo "real_path: ${real_path}, dir_name: ${dir_name}"data_dir="test_images"
if [ -d ${dir_name}/${data_dir} ]; thenrm -rf ${dir_name}/${data_dir}
filn -s ${dir_name}/./../../${data_dir} ${dir_name}new_dir_name=${dir_name}/build
mkdir -p ${new_dir_name}
cd ${new_dir_name}
cmake .. -DBUILD_MODE=${build_mode}
makecd -

CMakeLists.txt文件內(nèi)容如下:

PROJECT(OpenCV_Test)
CMAKE_MINIMUM_REQUIRED(VERSION 3.0)# support C++11
SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c11")
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
# support C++14, when gcc version > 5.1, use -std=c++14 instead of c++1y
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++1y")IF (BUILD_MODE STREQUAL "debug")MESSAGE(STATUS "****** BUILD MODE: DEBUG ******")SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -g -Wall -O2")SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}  -g -Wall -O2")
ELSE()MESSAGE(STATUS "====== BUILD MODE: REALSE ======")SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -O2")SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -O2")
ENDIF()MESSAGE(STATUS "project source dir: ${PROJECT_SOURCE_DIR}")
SET(PATH_TEST_FILES ${PROJECT_SOURCE_DIR}/./../../demo/OpenCV_Test)
SET(PATH_SRC_FILES ${PROJECT_SOURCE_DIR}/./../../src/fbc_cv)
MESSAGE(STATUS "path src files: ${PATH_TEST_FILES}")# head file search path
INCLUDE_DIRECTORIES(${PATH_TEST_FILES}${PATH_SRC_FILES}/include/opt/opencv3.1/include
)# find library
FIND_LIBRARY(opencv_core NAMES opencv_core PATHS /opt/opencv3.1/lib NO_DEFAULT_PATH)
FIND_LIBRARY(opencv_imgproc NAMES opencv_imgproc PATHS /opt/opencv3.1/lib NO_DEFAULT_PATH)
FIND_LIBRARY(opencv_highgui NAMES opencv_highgui PATHS /opt/opencv3.1/lib NO_DEFAULT_PATH)
FIND_LIBRARY(opencv_imgcodecs NAMES opencv_imgcodecs PATHS /opt/opencv3.1/lib NO_DEFAULT_PATH)
FIND_LIBRARY(opencv_video NAMES opencv_video PATHS /opt/opencv3.1/lib NO_DEFAULT_PATH)
FIND_LIBRARY(opencv_videoio NAMES opencv_videoio PATHS /opt/opencv3.1/lib NO_DEFAULT_PATH)
MESSAGE(STATUS "opencv libraries: ${opencv_core} ${opencv_imgproc} ${opencv_highgui} ${opencv_imgcodecs} ${opencv_video}" ${opencv_videoio})# recursive query match files :*.cpp, *c
FILE(GLOB_RECURSE TEST_CPP_LIST ${PATH_TEST_FILES}/*.cpp)
FILE(GLOB_RECURSE TEST_C_LIST ${PATH_TEST_FILES}/*.c)
#MESSAGE(STATUS "cpp list: ${TEST_CPP_LIST} ${TEST_C_LIST}")FILE(GLOB_RECURSE SRC_CPP_LIST ${PATH_SRC_FILES}/*.cpp)
#MESSAGE(STATUS "src cpp list: ${SRC_CPP_LIST}")# generate dynamic library for fbc_cv
ADD_LIBRARY(fbc_cv SHARED ${SRC_CPP_LIST})# build executable program
ADD_EXECUTABLE(OpenCV_Test ${TEST_CPP_LIST} ${TEST_C_LIST})
# add dependent library: static and dynamic
TARGET_LINK_LIBRARIES(OpenCV_Test fbc_cv ${opencv_core} ${opencv_imgproc} ${opencv_highgui} ${opencv_imgcodecs} ${opencv_video} ${opencv_videoio} pthread)

這兩個文件的位置在:prj/linux_cmake_OpenCV_Test目錄下,編譯方法:將終端定位到此目錄下,執(zhí)行:

$ ./build.sh :編譯生成release的fbc_cv動態(tài)庫和OpenCV_Test測試執(zhí)行文件;

$ ./build.sh 1:bian編譯生成debug的fbc_cv動態(tài)庫和OpenCV_Test測試執(zhí)行文件。

總結(jié)

以上是生活随笔為你收集整理的图像处理库(fbc_cv):源自OpenCV代码提取的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。