vjson.hpp

本文介绍了一个使用C++处理JSON文件的实用方法,包括从文件读取JSON数据、将JSON数据写入文件以及检查JSON对象中是否存在特定键。通过示例代码展示了如何利用nlohmann::json库进行这些操作。
//vov
#ifndef VJSON_HPP
#define VJSON_HPP

#include <iostream>
#include <string>
#include "json.hpp"

using vJson=nlohmann::json;

bool  vJsonFromFile(vJson &json_data,const std::string& fname) {
    std::fstream ifs(fname,std::fstream::in);
    try {
        ifs>>json_data;
    }
    catch(std::exception &e) {
        std::cout<<"["<<__FUNCTION__<<"]"<<e.what()<<"\n";
        ifs.close();
        return false;
    }
    ifs.close();
    return true;
}

bool vJsonToFile(vJson &json_data,const std::string& fname) {
    std::fstream ofs(fname,std::fstream::out);
    try {
        ofs<<json_data.dump(4);
    }
    catch(std::exception &e) {
        std::cout<<"["<<__FUNCTION__<<"]"<<e.what()<<"\n";
        return false;
    }
    ofs.close();
    return true;
}

bool vJsonHasKey(vJson &json_data,const std::string &key) {
    return (json_data.find(key)!=json_data.end())?true:false;
}

#endif

转载于:https://www.cnblogs.com/smallredness/p/10774989.html

卷 软件 的文件夹 PATH 列表 卷序列号为 C717-84E3 D:\opencv-4.10 │ LICENSE │ OpenCVConfig-version.cmake │ OpenCVConfig.cmake │ setup_vars_opencv4.cmd │ ├─bin │ opencv_videoio_ffmpeg4100_64.dll │ ├─etc │ ├─haarcascades │ │ haarcascade_eye.xml │ │ haarcascade_eye_tree_eyeglasses.xml │ │ haarcascade_frontalcatface.xml │ │ haarcascade_frontalcatface_extended.xml │ │ haarcascade_frontalface_alt.xml │ │ haarcascade_frontalface_alt2.xml │ │ haarcascade_frontalface_alt_tree.xml │ │ haarcascade_frontalface_default.xml │ │ haarcascade_fullbody.xml │ │ haarcascade_lefteye_2splits.xml │ │ haarcascade_license_plate_rus_16stages.xml │ │ haarcascade_lowerbody.xml │ │ haarcascade_profileface.xml │ │ haarcascade_righteye_2splits.xml │ │ haarcascade_russian_plate_number.xml │ │ haarcascade_smile.xml │ │ haarcascade_upperbody.xml │ │ │ ├─lbpcascades │ │ lbpcascade_frontalcatface.xml │ │ lbpcascade_frontalface.xml │ │ lbpcascade_frontalface_improved.xml │ │ lbpcascade_profileface.xml │ │ lbpcascade_silverware.xml │ │ │ └─licenses │ ade-LICENSE │ ffmpeg-license.txt │ ffmpeg-readme.txt │ flatbuffers-LICENSE.txt │ ippicv-EULA.rtf │ ippicv-readme.htm │ ippicv-third-party-programs.txt │ ippiw-EULA.rtf │ ippiw-support.txt │ ippiw-third-party-programs.txt │ ittnotify-LICENSE.BSD │ ittnotify-LICENSE.GPL │ libjpeg-turbo-LICENSE.md │ libjpeg-turbo-README.ijg │ libjpeg-turbo-README.md │ libopenjp2-LICENSE │ libopenjp2-README.md │ libpng-LICENSE │ libpng-README │ libtiff-COPYRIGHT │ mscr-chi_table_LICENSE.txt │ opencl-headers-LICENSE.txt │ openexr-AUTHORS.ilmbase │ openexr-AUTHORS.openexr │ openexr-LICENSE │ protobuf-LICENSE │ protobuf-README.md │ SoftFloat-COPYING.txt │ vasot-LICENSE.txt │ zlib-LICENSE │ ├─include │ └─opencv2 │ │ calib3d.hpp │ │ core.hpp │ │ cvconfig.h │ │ dnn.hpp │ │ features2d.hpp │ │ flann.hpp │ │ gapi.hpp │ │ highgui.hpp │ │ imgcodecs.hpp │ │ imgproc.hpp │ │ ml.hpp │ │ objdetect.hpp │ │ opencv.hpp │ │ opencv_modules.hpp │ │ photo.hpp │ │ stitching.hpp │ │ video.hpp │ │ videoio.hpp │ │ │ ├─calib3d │ │ calib3d.hpp │ │ calib3d_c.h │ │ │ ├─core │ │ │ affine.hpp │ │ │ async.hpp │ │ │ base.hpp │ │ │ bindings_utils.hpp │ │ │ bufferpool.hpp │ │ │ check.hpp │ │ │ core.hpp │ │ │ core_c.h │ │ │ cuda.hpp │ │ │ cuda.inl.hpp │ │ │ cuda_stream_accessor.hpp │ │ │ cuda_types.hpp │ │ │ cvdef.h │ │ │ cvstd.hpp │ │ │ cvstd.inl.hpp │ │ │ cvstd_wrapper.hpp │ │ │ cv_cpu_dispatch.h │ │ │ cv_cpu_helper.h │ │ │ directx.hpp │ │ │ dualquaternion.hpp │ │ │ dualquaternion.inl.hpp │ │ │ eigen.hpp │ │ │ fast_math.hpp │ │ │ mat.hpp │ │ │ mat.inl.hpp │ │ │ matx.hpp │ │ │ matx.inl.hpp │ │ │ neon_utils.hpp │ │ │ ocl.hpp │ │ │ ocl_genbase.hpp │ │ │ opengl.hpp │ │ │ operations.hpp │ │ │ optim.hpp │ │ │ ovx.hpp │ │ │ persistence.hpp │ │ │ quaternion.hpp │ │ │ quaternion.inl.hpp │ │ │ saturate.hpp │ │ │ simd_intrinsics.hpp │ │ │ softfloat.hpp │ │ │ sse_utils.hpp │ │ │ traits.hpp │ │ │ types.hpp │ │ │ types_c.h │ │ │ utility.hpp │ │ │ va_intel.hpp │ │ │ version.hpp │ │ │ vsx_utils.hpp │ │ │ │ │ ├─cuda │ │ │ │ block.hpp │ │ │ │ border_interpolate.hpp │ │ │ │ color.hpp │ │ │ │ common.hpp │ │ │ │ datamov_utils.hpp │ │ │ │ dynamic_smem.hpp │ │ │ │ emulation.hpp │ │ │ │ filters.hpp │ │ │ │ funcattrib.hpp │ │ │ │ functional.hpp │ │ │ │ limits.hpp │ │ │ │ reduce.hpp │ │ │ │ saturate_cast.hpp │ │ │ │ scan.hpp │ │ │ │ simd_functions.hpp │ │ │ │ transform.hpp │ │ │ │ type_traits.hpp │ │ │ │ utility.hpp │ │ │ │ vec_distance.hpp │ │ │ │ vec_math.hpp │ │ │ │ vec_traits.hpp │ │ │ │ warp.hpp │ │ │ │ warp_reduce.hpp │ │ │ │ warp_shuffle.hpp │ │ │ │ │ │ │ └─detail │ │ │ color_detail.hpp │ │ │ reduce.hpp │ │ │ reduce_key_val.hpp │ │ │ transform_detail.hpp │ │ │ type_traits_detail.hpp │ │ │ vec_distance_detail.hpp │ │ │ │ │ ├─detail │ │ │ async_promise.hpp │ │ │ dispatch_helper.impl.hpp │ │ │ exception_ptr.hpp │ │ │ │ │ ├─hal │ │ │ hal.hpp │ │ │ interface.h │ │ │ intrin.hpp │ │ │ intrin_avx.hpp │ │ │ intrin_avx512.hpp │ │ │ intrin_cpp.hpp │ │ │ intrin_forward.hpp │ │ │ intrin_lasx.hpp │ │ │ intrin_lsx.hpp │ │ │ intrin_msa.hpp │ │ │ intrin_neon.hpp │ │ │ intrin_rvv.hpp │ │ │ intrin_rvv071.hpp │ │ │ intrin_rvv_010_compat_non-policy.hpp │ │ │ intrin_rvv_010_compat_overloaded-non-policy.hpp │ │ │ intrin_rvv_011_compat.hpp │ │ │ intrin_rvv_compat_overloaded.hpp │ │ │ intrin_rvv_scalable.hpp │ │ │ intrin_sse.hpp │ │ │ intrin_sse_em.hpp │ │ │ intrin_vsx.hpp │ │ │ intrin_wasm.hpp │ │ │ msa_macros.h │ │ │ simd_utils.impl.hpp │ │ │ │ │ ├─opencl │ │ │ │ ocl_defs.hpp │ │ │ │ opencl_info.hpp │ │ │ │ opencl_svm.hpp │ │ │ │ │ │ │ └─runtime │ │ │ │ opencl_clblas.hpp │ │ │ │ opencl_clfft.hpp │ │ │ │ opencl_core.hpp │ │ │ │ opencl_core_wrappers.hpp │ │ │ │ opencl_gl.hpp │ │ │ │ opencl_gl_wrappers.hpp │ │ │ │ opencl_svm_20.hpp │ │ │ │ opencl_svm_definitions.hpp │ │ │ │ opencl_svm_hsa_extension.hpp │ │ │ │ │ │ │ └─autogenerated │ │ │ opencl_clblas.hpp │ │ │ opencl_clfft.hpp │ │ │ opencl_core.hpp │ │ │ opencl_core_wrappers.hpp │ │ │ opencl_gl.hpp │ │ │ opencl_gl_wrappers.hpp │ │ │ │ │ ├─parallel │ │ │ │ parallel_backend.hpp │ │ │ │ │ │ │ └─backend │ │ │ parallel_for.openmp.hpp │ │ │ parallel_for.tbb.hpp │ │ │ │ │ └─utils │ │ allocator_stats.hpp │ │ allocator_stats.impl.hpp │ │ filesystem.hpp │ │ fp_control_utils.hpp │ │ instrumentation.hpp │ │ logger.defines.hpp │ │ logger.hpp │ │ logtag.hpp │ │ tls.hpp │ │ trace.hpp │ │ │ ├─dnn │ │ │ all_layers.hpp │ │ │ dict.hpp │ │ │ dnn.hpp │ │ │ dnn.inl.hpp │ │ │ layer.details.hpp │ │ │ layer.hpp │ │ │ shape_utils.hpp │ │ │ version.hpp │ │ │ │ │ └─utils │ │ debug_utils.hpp │ │ inference_engine.hpp │ │ │ ├─features2d │ │ │ features2d.hpp │ │ │ │ │ └─hal │ │ interface.h │ │ │ ├─flann │ │ allocator.h │ │ all_indices.h │ │ any.h │ │ autotuned_index.h │ │ composite_index.h │ │ config.h │ │ defines.h │ │ dist.h │ │ dummy.h │ │ dynamic_bitset.h │ │ flann.hpp │ │ flann_base.hpp │ │ general.h │ │ ground_truth.h │ │ hdf5.h │ │ heap.h │ │ hierarchical_clustering_index.h │ │ index_testing.h │ │ kdtree_index.h │ │ kdtree_single_index.h │ │ kmeans_index.h │ │ linear_index.h │ │ logger.h │ │ lsh_index.h │ │ lsh_table.h │ │ matrix.h │ │ miniflann.hpp │ │ nn_index.h │ │ object_factory.h │ │ params.h │ │ random.h │ │ result_set.h │ │ sampling.h │ │ saving.h │ │ simplex_downhill.h │ │ timer.h │ │ │ ├─gapi │ │ │ core.hpp │ │ │ garg.hpp │ │ │ garray.hpp │ │ │ gasync_context.hpp │ │ │ gcall.hpp │ │ │ gcommon.hpp │ │ │ gcompiled.hpp │ │ │ gcompiled_async.hpp │ │ │ gcompoundkernel.hpp │ │ │ gcomputation.hpp │ │ │ gcomputation_async.hpp │ │ │ gframe.hpp │ │ │ gkernel.hpp │ │ │ gmat.hpp │ │ │ gmetaarg.hpp │ │ │ gopaque.hpp │ │ │ gproto.hpp │ │ │ gscalar.hpp │ │ │ gstreaming.hpp │ │ │ gtransform.hpp │ │ │ gtyped.hpp │ │ │ gtype_traits.hpp │ │ │ imgproc.hpp │ │ │ infer.hpp │ │ │ media.hpp │ │ │ opencv_includes.hpp │ │ │ operators.hpp │ │ │ ot.hpp │ │ │ render.hpp │ │ │ rmat.hpp │ │ │ s11n.hpp │ │ │ stereo.hpp │ │ │ video.hpp │ │ │ │ │ ├─cpu │ │ │ core.hpp │ │ │ gcpukernel.hpp │ │ │ imgproc.hpp │ │ │ ot.hpp │ │ │ stereo.hpp │ │ │ video.hpp │ │ │ │ │ ├─fluid │ │ │ core.hpp │ │ │ gfluidbuffer.hpp │ │ │ gfluidkernel.hpp │ │ │ imgproc.hpp │ │ │ │ │ ├─gpu │ │ │ core.hpp │ │ │ ggpukernel.hpp │ │ │ imgproc.hpp │ │ │ │ │ ├─infer │ │ │ bindings_ie.hpp │ │ │ bindings_onnx.hpp │ │ │ bindings_ov.hpp │ │ │ ie.hpp │ │ │ onnx.hpp │ │ │ ov.hpp │ │ │ parsers.hpp │ │ │ │ │ ├─oak │ │ │ infer.hpp │ │ │ oak.hpp │ │ │ │ │ ├─ocl │ │ │ core.hpp │ │ │ goclkernel.hpp │ │ │ imgproc.hpp │ │ │ │ │ ├─own │ │ │ assert.hpp │ │ │ convert.hpp │ │ │ cvdefs.hpp │ │ │ exports.hpp │ │ │ mat.hpp │ │ │ saturate.hpp │ │ │ scalar.hpp │ │ │ types.hpp │ │ │ │ │ ├─plaidml │ │ │ core.hpp │ │ │ gplaidmlkernel.hpp │ │ │ plaidml.hpp │ │ │ │ │ ├─python │ │ │ python.hpp │ │ │ │ │ ├─render │ │ │ render.hpp │ │ │ render_types.hpp │ │ │ │ │ ├─s11n │ │ │ base.hpp │ │ │ │ │ ├─streaming │ │ │ │ cap.hpp │ │ │ │ desync.hpp │ │ │ │ format.hpp │ │ │ │ meta.hpp │ │ │ │ queue_source.hpp │ │ │ │ source.hpp │ │ │ │ sync.hpp │ │ │ │ │ │ │ ├─gstreamer │ │ │ │ gstreamerpipeline.hpp │ │ │ │ gstreamersource.hpp │ │ │ │ │ │ │ └─onevpl │ │ │ accel_types.hpp │ │ │ cfg_params.hpp │ │ │ data_provider_interface.hpp │ │ │ default.hpp │ │ │ device_selector_interface.hpp │ │ │ source.hpp │ │ │ │ │ └─util │ │ any.hpp │ │ compiler_hints.hpp │ │ copy_through_move.hpp │ │ optional.hpp │ │ throw.hpp │ │ type_traits.hpp │ │ util.hpp │ │ variant.hpp │ │ │ ├─highgui │ │ highgui.hpp │ │ highgui_c.h │ │ │ ├─imgcodecs │ │ │ imgcodecs.hpp │ │ │ imgcodecs_c.h │ │ │ ios.h │ │ │ macosx.h │ │ │ │ │ └─legacy │ │ constants_c.h │ │ │ ├─imgproc │ │ │ bindings.hpp │ │ │ imgproc.hpp │ │ │ imgproc_c.h │ │ │ segmentation.hpp │ │ │ types_c.h │ │ │ │ │ ├─detail │ │ │ gcgraph.hpp │ │ │ legacy.hpp │ │ │ │ │ └─hal │ │ hal.hpp │ │ interface.h │ │ │ ├─ml │ │ ml.hpp │ │ ml.inl.hpp │ │ │ ├─objdetect │ │ aruco_board.hpp │ │ aruco_detector.hpp │ │ aruco_dictionary.hpp │ │ barcode.hpp │ │ charuco_detector.hpp │ │ detection_based_tracker.hpp │ │ face.hpp │ │ graphical_code_detector.hpp │ │ objdetect.hpp │ │ │ ├─photo │ │ │ cuda.hpp │ │ │ photo.hpp │ │ │ │ │ └─legacy │ │ constants_c.h │ │ │ ├─stitching │ │ │ warpers.hpp │ │ │ │ │ └─detail │ │ autocalib.hpp │ │ blenders.hpp │ │ camera.hpp │ │ exposure_compensate.hpp │ │ matchers.hpp │ │ motion_estimators.hpp │ │ seam_finders.hpp │ │ timelapsers.hpp │ │ util.hpp │ │ util_inl.hpp │ │ warpers.hpp │ │ warpers_inl.hpp │ │ │ ├─video │ │ │ background_segm.hpp │ │ │ tracking.hpp │ │ │ video.hpp │ │ │ │ │ ├─detail │ │ │ tracking.detail.hpp │ │ │ │ │ └─legacy │ │ constants_c.h │ │ │ └─videoio │ │ cap_ios.h │ │ registry.hpp │ │ videoio.hpp │ │ videoio_c.h │ │ │ └─legacy │ constants_c.h │ └─x64 └─vc17 ├─bin │ opencv_annotation.exe │ opencv_calib3d4100.dll │ opencv_core4100.dll │ opencv_dnn4100.dll │ opencv_features2d4100.dll │ opencv_flann4100.dll │ opencv_gapi4100.dll │ opencv_highgui4100.dll │ opencv_imgcodecs4100.dll │ opencv_imgproc4100.dll │ opencv_interactive-calibration.exe │ opencv_ml4100.dll │ opencv_model_diagnostics.exe │ opencv_objdetect4100.dll │ opencv_photo4100.dll │ opencv_stitching4100.dll │ opencv_version.exe │ opencv_version_win32.exe │ opencv_video4100.dll │ opencv_videoio4100.dll │ opencv_videoio_ffmpeg4100_64.dll │ opencv_visualisation.exe │ └─lib OpenCVConfig-version.cmake OpenCVConfig.cmake OpenCVModules-release.cmake OpenCVModules.cmake opencv_calib3d4100.lib opencv_core4100.lib opencv_dnn4100.lib opencv_features2d4100.lib opencv_flann4100.lib opencv_gapi4100.lib opencv_highgui4100.lib opencv_imgcodecs4100.lib opencv_imgproc4100.lib opencv_ml4100.lib opencv_objdetect4100.lib opencv_photo4100.lib opencv_stitching4100.lib opencv_video4100.lib opencv_videoio4100.lib 请分析是否正确
最新发布
08-12
<think>我们被要求分析一个文件夹结构,判断它是否是OpenCV 4.10.0的正确安装结构。根据提供的树状结构,我们来检查关键部分。 OpenCV通常包含以下主要目录和文件: 1. 根目录:包含许可证文件、CMake配置文件、环境设置脚本等。 2. bin目录:包含动态链接库(DLL)和可执行工具。 3. etc目录:包含Haar和LBP级联分类器的XML文件,以及各种第三方库的许可证文件。 4. include目录:包含C++头文件。 5. x64目录:包含64位版本的库和可执行文件(在Windows上通常按编译器和平台组织)。 我们检查提供的结构: 根目录下: - LICENSE: 存在,OpenCV的许可证。 - OpenCVConfig-version.cmake 和 OpenCVConfig.cmake: 存在,用于CMake的配置文件。 - setup_vars_opencv4.cmd: 存在,设置环境变量的脚本。 bin目录: - opencv_videoio_ffmpeg4100_64.dll: 存在,用于视频I/O的FFmpeg动态库。 etc目录: - haarcascades和lbpcascades目录:包含各种预训练的级联分类器XML文件,存在。 - licenses目录:包含第三方库的许可证,存在。 include目录: - 包含opencv2目录,里面是各个模块的头文件,结构完整。 x64目录: - 按编译器vc17(Visual Studio 2017)组织,包含bin和lib目录。 - bin目录:包含各个模块的DLL和工具可执行文件(如opencv_annotation.exe等)。 - lib目录:包含导入库(.lib文件)和CMake配置文件。 根据以上检查,这个文件夹结构符合OpenCV 4.10.0的Windows安装结构。它包含了必要的头文件、库文件、可执行工具以及配置文件。 因此,结论是:正确。 但是,请注意,通常OpenCV的预编译包会提供两个版本的库:Release和Debug。在这个目录结构中,我们只看到Release版本(因为DLL和LIB文件没有以'd'结尾,例如opencv_core4100.dll而不是opencv_core4100d.dll)。所以,这可能是仅包含Release版本的安装。如果需要Debug版本,可能需要自己编译或获取包含Debug版本的包。 另外,在x64/vc17/bin目录下,我们看到了opencv_videoio_ffmpeg4100_64.dll,这表示它提供了FFmpeg支持。 所以,这个结构是正确的OpenCV 4.10.0预编译包(Release版)的目录结构。 §§相关问题§§: 1. 如何配置Visual Studio项目以使用这个OpenCV? 2. 在CMake项目中如何正确引用这个OpenCV目录? 3. 如何使用OpenCV的级联分类器进行人脸检测? 4. 如何编译OpenCV以包含Debug版本的库?</think>根据您提供的文件夹结构,这是 OpenCV 4.10.0 的 Windows 预编译版本的标准安装目录。以下是关键分析: ### ✅ 正确性分析 1. **核心组件完整** - 包含所有核心模块(core, imgproc, dnn, videoio 等)的 DLL 和 LIB 文件 - 头文件路径 `include/opencv2` 结构完整 - 配置文件(OpenCVConfig.cmake)存在 2. **目录结构规范** ```markdown ├─bin # 主二进制文件 ├─etc # 配置文件/级联分类器 │ ├─haarcascades │ ├─lbpcascades │ └─licenses ├─include # 头文件 └─x64/vc17 # 平台特定文件 ├─bin # 64位 DLL └─lib # 64位 LIB ``` 3. **关键文件验证** - FFmpeg 支持:`opencv_videoio_ffmpeg4100_64.dll` 存在 - 人脸检测分类器:`haarcascade_frontalface_default.xml` 存在 - CMake 配置:`OpenCVConfig.cmake` 存在 - 环境脚本:`setup_vars_opencv4.cmd` 存在 ### ⚠️ 使用注意事项 1. **开发环境配置示例(Visual Studio)** ```cmake # CMakeLists.txt 示例 cmake_minimum_required(VERSION 3.10) project(OpenCV_Test) # 设置OpenCV路径 set(OpenCV_DIR "D:/opencv-4.10/x64/vc17/lib") find_package(OpenCV REQUIRED) add_executable(main main.cpp) target_link_libraries(main ${OpenCV_LIBS}) ``` 2. **人脸检测代码示例** ```cpp #include <opencv2/objdetect.hpp> #include <opencv2/highgui.hpp> int main() { cv::CascadeClassifier faceDetector; // 加载级联分类器 faceDetector.load("D:/opencv-4.10/etc/haarcascades/haarcascade_frontalface_default.xml"); cv::Mat image = cv::imread("input.jpg"); std::vector<cv::Rect> faces; // 执行人脸检测 faceDetector.detectMultiScale(image, faces); // 绘制检测结果 for (const auto& face : faces) { cv::rectangle(image, face, cv::Scalar(0, 255, 0), 2); } cv::imshow("Result", image); cv::waitKey(); return 0; } ``` 3. **环境变量配置** 运行前需执行环境脚本: ```cmd D:\opencv-4.10\setup_vars_opencv4.cmd ``` ### 结论 **该目录结构是完整且正确的 OpenCV 4.10.0 Windows 预编译版本**,包含开发所需的全部组件(头文件、库文件、配置文件、工具等),可直接用于 Visual Studio 2017 (vc17) 的 64 位项目开发。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值