CMakeLists.txt文件中需要添加第三方库,并企鹅在CMakeLists.txt中添加

include_directories(${PROJECT_SOURCE_DIR}/../3party/gflags-2.2.2/include)

link_directories(${PROJECT_SOURCE_DIR}/../3party/boost-1.73.0/lib-import)

target_link_libraries(
    gramma_ir
    opencv_world343    
    gflags_static(看情况添加,具体指向静态库,或者动态库)
)

对应的cmake

cmake_minimum_required(VERSION 3.1)project(gramma_ir)set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR})include_directories(${PROJECT_SOURCE_DIR}/../3party/boost-1.73.0/include)include_directories(${PROJECT_SOURCE_DIR}/../3party/gflags-2.2.2/include)include_directories(${PROJECT_SOURCE_DIR}/../include)
include_directories(${PROJECT_SOURCE_DIR}/../include/opencv)
include_directories(${PROJECT_SOURCE_DIR}/../include/opencv2)link_directories(${PROJECT_SOURCE_DIR}/../lib)
link_directories(${PROJECT_SOURCE_DIR}/../3party/boost-1.73.0/lib-import)
link_directories(${PROJECT_SOURCE_DIR}/../3party/gflags-2.2.2/lib-static)add_executable(gramma_ir gramma_ir.cc)
target_link_libraries(gramma_iropencv_world343  gflags_staticgflags_nothreads_staticgflags_nothreads_static_debuggflags_static_debug#boost_filesystem-vc140-mt-x64-1_73#libboost_regex-vc140-mt-s-x64-1_73
)

调用boost库,批量处理图片或者单张图片处理

#include <opencv2/opencv.hpp>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui.hpp>
#include<iostream>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <cv.h>
#include <cxcore.h>
#include <cvaux.h>
#include <stdlib.h>
#include <imgproc.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/imgproc/types_c.h>
#include <opencv2/highgui/highgui_c.h>#include <boost/filesystem.hpp>
#include <boost/regex.hpp>
#include <gflags/gflags.h>using namespace std;
using namespace cv;void GetGammaCorrection(Mat& src, Mat& dst, const float fGamma)
{unsigned char bin[256];for (int i = 0; i < 256; ++i){bin[i] = saturate_cast<uchar>(pow((float)(i / 255.0), fGamma) * 255.0f);}dst = src.clone();uchar* ptr = dst.ptr<uchar>(0);for (int i = 0; i < 400 * 640; ++i){ptr[i] = bin[ptr[i]];}
}void ProcessImage(const std::string& path, float Gamma, cv::Mat& output) {//const std::string path_ir = path;cv::Mat src = cv::imread(path, IMREAD_UNCHANGED);std::cout << src.channels() << std::endl;if (src.empty()){cout << "Error: Could not load image" << endl;}int fGamma = Gamma;cv::Mat gamma_dst;GetGammaCorrection(src, gamma_dst, fGamma);output = gamma_dst;
}int main(int argc, char** argv)
{   boost::filesystem::path input_path(argv[1]);cv::Mat dst;float fGamma = 1 / 1.8;int count = 0;if (boost::filesystem::is_regular_file(input_path)) {cv::Mat src = cv::imread(input_path.string(), IMREAD_UNCHANGED);GetGammaCorrection(src, dst, fGamma);imshow("dst", dst);cv::imwrite("../result/ir.png", dst);}else{boost::filesystem::path dir_path = input_path.parent_path();boost::regex filter(input_path.filename().string());boost::filesystem::directory_iterator end_itr;     for (boost::filesystem::directory_iterator itr(dir_path); itr != end_itr; itr++) {//directory_iterator(p)就是迭代器的起点,无参数的directory_iterator()就是迭代器的终点。if (!boost::filesystem::is_regular_file(itr->status()))// is_regular_file 判断是否是普通文件continue;boost::smatch what;if (!boost::regex_match(itr->path().filename().string(), what, filter))continue;cv::Mat src = cv::imread(itr->path().string(), IMREAD_UNCHANGED);GetGammaCorrection(src, dst, fGamma);imshow("dst", dst); count++;string dstPath;dstPath = "../result/"+ std::to_string(count) + ".png";cv::imwrite(dstPath.c_str(),dst);std::cout << count << std::endl;}     }   //cv::waitKey(0);return 0;
}

如果在编译的过程中出现如下问题,那么可能出现的问题以及对应的解决情况如下所示:

Opencv生成exe可执行文件于opencv_world343.dll文件在同一个目录下面。或者cmakelists添加寻找opencv_world343.dll的绝对路径。否则则是报错如下。

Cmakelists具体内容如下:

cmake_minimum_required(VERSION 3.1)project(fill_test)set(EXECUTABLE_OUTPUT_PATH ${PROJECT_SOURCE_DIR})include_directories(${PROJECT_SOURCE_DIR}/../include)include_directories(${PROJECT_SOURCE_DIR}/../include/opencv)include_directories(${PROJECT_SOURCE_DIR}/../include/opencv2)link_directories(${PROJECT_SOURCE_DIR}/../lib)add_executable(fill_test complete_test.cc)   //待测试主程序target_link_libraries(fill_test              //链接库,主程序opencv_world343                                fill_test需要链接的第三方库)

文件目录如下:
总文件:

Build

Example:
CMakeLists.txt

complete_test.cc

2.bmp()

注:RelWithDebInfo生成文件将opencv_world343.dll放到生成的.exe同级目录下

Include:

Opencv(原生,可复用)

Opencv2(原生,可复用)

Lib:

Opencv_world343.lib(可复用)

Opencv_world343d.lib(可复用)

其他lib

比如:deptrum_depth.lib内含接口文件

补充:
今日增加AE封装接口 ,通过cnake调用,对该工程有进一步认识。

总体的调用架构如下:

cmakelists调用,3rdparty种Dependencies.cmake,然后Dependencies.cmake部分调用各个调用库对应的FindBoost.cmake,FindEigen3.cmake,FindOpenCV.cmake。这样整个架构就很显然类似与一个三级目录cmakelist——》Dependencies.cmake——》FindOpenCV.cmake(一类)。

其次,类的调用可以像下面这样写:

add_library(AE STATIC        //名称   生成库类型
  automatic_exposure.h
 automatic_exposure.cc
)

将接口编译成静态库AE,然后将生成的静态库AE链接到对应的需要的主函数deptrum_camera中,

#link_libraries(deptrum_camera_static)
  if (MSVC)
    target_link_libraries(${targetname}
      deptrum_camera
      AE                    
      ${OpenCV_LIBS}
      ${Zlib_LIBS}
      loguru
      visualizer      
    )

全部camkelists如下:

cmake_minimum_required(VERSION 3.10)

# deptrum_camera_test
include_directories(..)
include_directories(include)
include_directories(${Deptrum_SOURCE_DIR}/base)

add_library(AE STATIC
  automatic_exposure.h
 automatic_exposure.cc
)

#add_library(AE STATIC
#AutomaticExposure.h
#AutomaticExposure.cpp
#)

function(add_test_case       targetname    srcs)     //function函数(名称   形参  )
  add_executable(${targetname} ${srcs})
  link_directories(${targetname} BEFORE
    PRIVATE ${OpenCV_SHARED_LIBRARY_DIRS}
  )

#link_libraries(deptrum_camera_static)
  if (MSVC)    //MSVC表示windows系统
    target_link_libraries(${targetname}
      deptrum_camera
      AE
      ${OpenCV_LIBS}
      ${Zlib_LIBS}
      loguru
      visualizer      
    )
  endif()

if(${SYSTEM_PLATFORM} STREQUAL "linux-aarch64")
    target_link_libraries(${targetname}
      X11
    )

add_definitions(-D BUILD_WITH_X11)
  endif()

  set_target_properties(${targetname} PROPERTIES FOLDER "camera-demo-test")
endfunction()

add_test_case(deptrum_camera_tof_test   tof_main.cc)
add_test_case(deptrum_camera_thinman_mini_test    thinman_mini_main.cc)
add_test_case(deptrum_camera_fatman_mini_test     fatman_mini_main.cc)

ISP 【一】————boost标准库使用——批量读取保存文件 /boost第三方库的使用及其cmake添加,图像gramma相关推荐

  1. json字段顺序读取 python_如何利用Python批量读取视频文件的时间长度?

    本期的主题是利用Python来实现对视频文件时间长度的读取. 在学习编程语言时,相比较于通过书本来学习知识,我更喜欢通过观看学习视频的方式来进行学习,通过主讲老师的讲解,我能很直观且快速的了解一些知识 ...

  2. Python常用小技巧(五)——批量读取json文件

    Python常用小技巧(五)--批量读取json文件 前言:其实Python能够批量读取很多文件,这里,本人以json文件为例(json是标注图片时生成的文件,记录有标注的坐标和标签,友情推荐标注图片 ...

  3. python 批量读取csv_Python Pandas批量读取csv文件到dataframe的方法

    PYTHON Pandas批量读取csv文件到DATAFRAME 首先使用glob.glob获得文件路径.然后定义一个列表,读取文件后再使用concat合并读取到的数据. #读取数据 import p ...

  4. python 批量读取csv 文件到dataframe_python 批量读取csv_Python Pandas批量读取csv文件到dataframe的方法...

    PYTHON Pandas批量读取csv文件到DATAFRAME 首先使用glob.glob获得文件路径.然后定义一个列表,读取文件后再使用concat合并读取到的数据. #读取数据 import p ...

  5. python批量读取csv文件-Python读取/批量读取文件

    相信很多人的日常工作中,数据源除了来自数据库以外,其次就是外部文件,因此掌握读取文件的技能是相当必要的.在这里特此整理读取外部文件的方法,希望能有助你们快速解决问题.当然本文对读者的假设是有一定的py ...

  6. python导入txt为dataframe-python批量读取txt文件为DataFrame的方法

    我们有时候会批量处理同一个文件夹下的文件,并且希望读取到一个文件里面便于我们计算操作.比方我有下图一系列的txt文件,我该如何把它们写入一个txt文件中并且读取为DataFrame格式呢? 首先我们要 ...

  7. python读取txt为dataframe_python批量读取txt文件为DataFrame的方法

    我们有时候会批量处理同一个文件夹下的文件,并且希望读取到一个文件里面便于我们计算操作.比方我有下图一系列的txt文件,我该如何把它们写入一个txt文件中并且读取为DataFrame格式呢? 首先我们要 ...

  8. python读取所有txt文件_python如何批量读取txt文件

    python批量读取txt文件的方法:首先导入系统模块:然后将文件夹路径更改为需要批量读取的txt文件存放的路径:再调用系统模块得到该文件夹下的所有文件名称:最后遍历文件夹,读取txt文件. 如果文件 ...

  9. matlab读txt文件不完整,求助Matlab批量读取TXT文件出错

    我用dlmread函数批量读取txt文件中的一个数据,但运行结果1.txt文件中只有一个数据0,调试时报错:错误使用 dlmread (line 147) 文件结尾不支持空的格式字符串,文件有128列 ...

最新文章

  1. 带有128KB缓存的AD7606模拟采集板
  2. Python运行方式
  3. JZOJ 3596. 【CQOI2014】和谐矩阵
  4. wxWidgets:wxGenericAboutDialog类用法
  5. C函数数组元素初始化
  6. 【主题演讲】探索云、视频会议,编解码的奥妙
  7. matlab中将数据保存为txt文件_matlab中将数据输出保存为txt格式文件的方法 (1)
  8. python路径拼接os.path.join()函数完全教程_详解python路径拼接os.path.join()函数的用法...
  9. Spring mvc+ maven + MyBatis + Oracle + IDEA 项目搭建 - framework 进阶中(一)
  10. oracle/PL/SQL编程(4)
  11. 矩池云上安装AlphaFold教程
  12. vue组件双向绑定.sync修饰符的一个坑
  13. 项目组网技术方案实施要点
  14. Linux网络——配置网络之iproute家族命令
  15. c语言word类型的题库,可下载c语言上机题库word版
  16. mmd动作:Fukayomi
  17. 谷歌Chrome浏览器保存网页为PDF
  18. iOS中播放音乐和音效
  19. 如何将本地文件上传到Gitlab中?
  20. SSRF利用 Gopher |Gopher攻击mysql及内网

热门文章

  1. mysql 表引擎无法更新_Mysql安装archive引擎更新表引擎
  2. 单片机彩灯移动实验_用S7-1200 PLC实现循环彩灯的控制,含源程序
  3. 设计一个扩展自抽象类geometricobject的新的triangle类_C++ 接口(抽象类)
  4. python搭积木_从零实现”搭积木式实现策略“的回测系统 part VI
  5. centos 配置bond_Linux CentOS 7 多网卡配置bond模式 bond1 bond5 bond6
  6. python数据去噪声_Logreduce:用Python和机器学习去除日志噪音
  7. 链表倒数第k个节点_面试题 02.02. 返回倒数第 k 个节点
  8. 使用Python,OpenCV进行平滑和模糊
  9. 使用OpenCV,Python和dlib进行眨眼检测及计数
  10. lasTools laszip.exe 点云las/laz的无损压缩/解压缩工具