C/C++
文章平均质量分 53
Alex-Leung
Stay hungry,stay foolish.
展开
-
基于opencv的超声扇形区域检测(C++)
简介从超声采集的图像会带有部分用户操作界面的组件,若使用全局图片进行病灶检测,操作界面的组件可能会对检测结果造成干扰,通过扇形区域检测可防止这种情况的出现。CodeLargestConnecttedComponent函数出自该博客《opencv 获取图像最大连通域 c++和python版》// 获取检测区域边界cv::Rect GetBorder(cv::Mat img) { cv::Mat gray; cvtColor(img, gray, cv::COLOR_BGR2GRAY)原创 2022-04-12 10:34:13 · 4581 阅读 · 0 评论 -
visual studio配置C++项目生成.pdb文件(符号文件)
visual studio配置图片来自visual studio 2019版本,将下列配置设置成红框选项即可。C/C++ => 常规链接器 => 调试配置属性 => 高级检查是否清除时.pdb结尾文件被删除原创 2021-12-29 17:01:25 · 4389 阅读 · 2 评论 -
C++ Eigen3库Tensor操作整理(持续更新)
项目引入VS2019环境下点击<项目>管理NuGet程序包搜索Eigen3,安装即可在项目源代码添加头文件#include <unsupported/Eigen/CXX11/Tensor>Tensor操作concatenate#include <iostream>#include <unsupported/Eigen/CXX11/Tensor>int main(){ Eigen::Tensor<float, 2&原创 2021-11-15 10:32:46 · 7807 阅读 · 1 评论 -
一个案例展示opencv在医学图像病灶分割任务的常用操作
任务根据语义分割网络的输出,去求以下任务的结果。(神经网络的后处理操作)(1)画出病灶边界(2)画出贴近的椭圆(3)过滤病灶内的噪声(4)计算病灶的不规则周长(5)计算病灶面积(6)画出径线原图预处理假设网络为一个二分类网络,网络的输出是一个二维的tensor,每个像素的值为0~1的置信度。先预处理操作,通过设置阈值把每个像素转换为0或者255,分别代表背景和目标。储存为cv::Mat 8UC1的模式,图片格式为8位单通道,2^8 = 256, 对应每个像素的取值范围为0 ~ 255。原创 2021-11-02 17:55:04 · 3349 阅读 · 0 评论 -
Windows环境使用TensorRT工具trtexec将ONNX转换为engine(trt)文件
当前环境软件版本CUDA10.2cudnn7.6.5TensorRT7.0.0.11根据当前环境编译trtexec源码在TensorRT里面,路径TensorRT-7.0.0.11\samples\trtexec1. 使用Visual Studio打开项目打开trtexec.sln文件2. 给项目配置正确的头文件和静态库路径头文件右键解决方案属性=> C/C++ => 常规 => 附加包含目录添加以下路径(根据自身情况原创 2021-09-28 17:16:36 · 7433 阅读 · 1 评论 -
Visual Studio 2019文件编码修改教程
常见问题3>C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.2\include\cuda_runtime_api.h(9349,1): warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失3>D:\AutoEchi_YOLO\logging.h(73,33): warning C4996: 'localtime': This function or v原创 2021-09-26 13:19:04 · 1899 阅读 · 0 评论 -
CMP0104: CMAKE_CUDA_ARCHITECTURES now detected for NVCC, empty CUDA_ARCHITECTURES not allowed报错处理
报错提示处理方案CMake使用3.17.1以下版本原创 2021-09-26 11:57:05 · 2468 阅读 · 0 评论 -
CMAKE常用指令整理(完善中)
CMAKE官方文档目录注意事项指令find_libraryadd_library注意事项name属性必须全局唯一指令find_libraryfind_library (<VAR> name1 [path1 path2 ...])例子//寻找log库,找到后使用变量log-lib表示find_library(log-lib log)//在指定路径寻找log库find_library(log-lib log ./)add_libraryadd_librar.原创 2021-08-05 10:54:52 · 109 阅读 · 0 评论 -
win10 C++源码编译安装protobuf(含DLL生成)
目录前期准备protobuf项目地址官方教程地址克隆项目源码安装准备1.创建install文件夹2.安装编译源码需要的子模块3.进入cmake的目录Cmake配置1.创建目录2.使用Release配置3.生成Visual Studio解决方案文件编译安装生成DLL前期准备VS2019Cmake(这里用的是3.21.0-rc1)Gitprotobuf项目地址https://github.com/protocolbuffers/protobuf官方教程地址https://github.原创 2021-07-02 12:10:17 · 2074 阅读 · 2 评论 -
ONNX使用pytorch导出的网络模型进行推理(C++)
官方例程https://github.com/microsoft/onnxruntime/blob/master/csharp/test/Microsoft.ML.OnnxRuntime.EndToEndTests.Capi/CXX_Api_Sample.cpp在VisualStudio使用NuGet安装Onnx-Runtime.GPU点击项目,管理NuGet程序包点击预览搜索Microsoft.ML.OnnxRuntime.Gpu安装对应版本的Runtime修改后的代码使用pyto原创 2021-06-30 14:22:31 · 3352 阅读 · 3 评论 -
Paddle-Inference-Demo例程Win10 GPU环境编译
目录1.前置工作2.使用Cmake生成.sln文件3.编译源码3.1 打开VS后添加CUDA的头文件路径(include)和链接库路径(lib/x64)3.2 修改paddle链接库名字3.4 编译3.5 运行demo1.前置工作需要配置好以下环境cuda 10.2cudnn 7.6.5vs 2019cmake 3.17.0以及编译好的paddle预测库,目前使用官方编译好的动态链接库会提示文件损坏,需要自行编译预测库,预测库win10平台下编译教程请看下面链接Paddle-Infer原创 2021-06-22 19:05:18 · 1018 阅读 · 1 评论 -
Paddle-Inference win10平台C++源码编译(GPU版本亲测成功)
mkdir buildcd buildcmake .. -G "Visual Studio 14 2015" -A x64 -DWITH_GPU=ON -DWITH_TESTING=OFF -DON_INFER=ON -DCMAKE_BUILD_TYPE=Release -DPY_VERSION=3 -DWITH_TENSORRT=ON -DTENSORRT_ROOT="E:\\TensorRT-7.0.0.11" -DWITH_NCCL=OFF原创 2021-06-11 09:58:56 · 2312 阅读 · 1 评论 -
CUDA+TensorRT项目Win10环境CMake编译配置模板
# 最低版本cmake_minimum_required(VERSION 2.9)# yolov5为项目名称project(yolov5)# C++版本add_definitions(-std=c++11)# OpenCV和TensorRT路径# 可直接从官网下载已编译的windows版本set(OpenCV_DIR "D:\\opencv3.4.7\\build")# 设置为TensorRT的根目录set(TRT_DIR "D:\\TensorRT-7.0.0.11")# 其他配置原创 2021-06-07 09:48:25 · 2104 阅读 · 1 评论 -
win10平台下编译librealsense-master下的unity-wrapper
1.官方教程https://github.com/IntelRealSense/librealsense/tree/master/wrappers/unity2.克隆仓库git clone https://github.com/IntelRealSense/librealsense.git3.下载依赖如果通过CMake联网下载可能无法下载以下依赖D4XX_FW_Image-5.12.13.50.binL5XX_FW_Image-1.5.5.0.binSR3XX_FW_Image-3.原创 2021-06-04 13:31:53 · 656 阅读 · 2 评论 -
win10 VS2019环境编译OpenCV(带contrib库Aruco)
目录1.前期准备2.Cmake编译配置步骤1. 选择source与build文件夹路径,build文件夹为人为新建的空文件夹。步骤2. 点击Configure按钮,选择编译配置。步骤3. 编译配置。步骤4. 点击Finish开始获取配置信息。步骤5. 点击Generate编译。步骤6. 成功编译后点击Open Project,启动VS。步骤7. 选择Release还是Debug版本步骤8. 对INSTALL解决方案进行生成,会先自动执行BUILD1.前期准备下载相同版本的OpenCV与OpenCV-Co原创 2021-04-15 17:18:46 · 2086 阅读 · 0 评论 -
win10环境Qt C++项目添加opencv库(2021年3月更新,无需编译)
1.下载opencv官网:https://opencv.org/releases/选择windows的下载,下载完解压,只需要build部分。2.在Qt Creator新建项目右键项目选择添加库3.选择opencv build文件夹里面的.lib文件和include文件夹选择外部库选择动态链接库和include文件夹动态链接库:前往build/x64/vc15/lib文件夹下选择opencv_worldxxx.lib包含文件夹路径:build/include原创 2021-03-16 18:26:29 · 1596 阅读 · 0 评论 -
Ubuntu 16.04 安装opencv 3.4.7(C/C++环境)
系统环境OpenCV 3.4.7Ubuntu 16.041. 进入官网下载安装包官网地址:https://opencv.org/releases/page/2/下载Sources下载地址格式# https://github.com/opencv/opencv/archive/版本号.zipwget https://github.com/opencv/opencv/archive/3.4.7.zip2. 安装编译环境sudo apt-get install cmakesudo apt原创 2021-01-16 03:58:59 · 335 阅读 · 0 评论 -
C++返回一个map所有key组成的vector
问题总结任务需要返回某个map的所有key的集合用于迭代,key值为非连续int。code#include <iostream>#include <map>#include <vector>using namespace std;// 返回以对应类型的key的vectorvector<int> KeySet(map<int, float> test){ vector<int> keys; for(ma原创 2021-01-13 17:34:51 · 8143 阅读 · 0 评论 -
C++中string与char *的转换
String 与 char *互转记得使用命名空间using namespace std;string 转 char*string str = "test";//1. 使用data()const char *p = str.data();//或char *p = (char*) str.data();//2. c_str()string str = "test";const char *p = str.c_str();//c_str()的返回结果是const类型,还能像下面这种办原创 2021-01-08 10:33:28 · 144 阅读 · 0 评论 -
Python使用ctypes调用C++(TensorRT)对图片进行预测-字符串传参与返回
问题python服务端需要调用C++实现的TensorRT模块,需要把TensorRT引出一个C接口。C接口接收模型和图片路径,返回包含预测结果的json字符串。环境Ubuntu 16.04Python 3.7C++ 11CUDA 10.2TensorRT 7.1OpenCV 3.4.7TensorRT部分需要注意的点:字符串传输使用char *,不要使用string不需要在.h头文件再次声明包含在extern "C"里的函数cmake编译链接库请使用cuda的# 由于使原创 2021-01-08 10:11:32 · 854 阅读 · 8 评论 -
C++获取指定路径文件夹下的所有图片-windows和linux下各自的处理方案
使用场景获取某路径下的图片,再逐张传入TensorRT进行识别,但是如果要做连续帧处理,需要将图片序列从小到大排序。Code#define _CRT_SECURE_NO_WARNINGS#include <io.h>#include <iostream>#include <vector>#include <algorithm>using namespace std;struct ImageFile{ std::string file原创 2021-01-07 11:14:18 · 2005 阅读 · 0 评论 -
VS CUDA项目提示不支持vs2017的解决方法
VS CUDA项目提示不支持vs2017的解决方法错误提示unsupported Microsoft Visual Studio version! Only the versions 2012, 2013, 2015 and 2017 are supported! CUDA_Project c:\program files\nvidia gpu computing toolkit\cuda\v9.0\include\crt\host_config.h 133 解决方案调试 - <项目名&g原创 2020-11-03 12:36:29 · 946 阅读 · 0 评论 -
如何使用ffmpeg为Mac进行视频硬解码/硬编码(在Qt环境)
如何使用ffmpeg为Mac进行硬解/编码(Qt环境)科普前期准备安装ffmpeg将ffmpeg的库文件添加到Qt的.pro文件中在源文件用引入头文件第一步:先查看本机支持哪种硬件加速第二步:查看这个硬件加速方案支持哪种编码器&解码器第三步:在Qt源码中指定使用哪个编码器或解码器核心代码MacBook自带摄像头参数设置总结科普ffmpeg正确读法: f - f - m - peg而不...原创 2020-01-15 20:54:25 · 4898 阅读 · 2 评论 -
Qt页面跳转与跳转传参
Qt页面跳转与跳转传参原理举例图片列表页图片浏览页代码示例(只需留意含注释的代码)发送页面的部分库文件发送页面的部分源文件接收页面的部分库文件(只需留意含注释的代码)接收页面的部分源文件原理qt实现跳转与跳转传参是通过信号(SIGNAL)和槽(SLOT)来实现举例下图是一个图片浏览功能,点击图片(QLabel)的时候在新页面打开这张图的大图,就需要从图片列表页传递图片的路径给图片浏览页...原创 2020-01-08 06:57:54 · 1592 阅读 · 3 评论 -
XILINX SDK Xil_Out32传入float类型参数的解决方案
XILINX SDK Xil_Out32传入float类型参数的解决方案在项目尝试将float类型参数直接传输到BRAM中,再取出来发现跟传入的值不对,原来要先将float类型参数转成u32的数值保存到BRAM,取出来再从u32转回floatXILINX HLS + Vivado + SDK实现通过AXI-Master协议从ARM(PS)传输数组到FPGA(PL)端RAM传入例子float...原创 2019-04-19 23:18:49 · 6105 阅读 · 1 评论 -
XILINX HLS + Vivado + SDK实现通过AXI-Master协议从ARM(PS)传输数组到FPGA(PL)端RAM
XILINX HLS + Vivado + SDK实现自定义IP通过AXI-Master协议从ARM(PS)传输数组到FPGA(PL)端RAM简介最近在使用XILINX ZYNQ的Soc板子做卷积神经网络(CNN)加速器,遇到了个问题:如何从PS传输批量权重到PL端?网上找了下发现比较少资料,XILINX官网有一个例程,但是有问题的:2013.4 Vivado HLS - Example s...原创 2019-04-19 23:07:22 · 9115 阅读 · 21 评论 -
排序算法(二)-冒泡排序(Bubble Sort)
工作原理:一次比较两个元素,将顺序错误的纠正C语言实现:1.#include //定义常量数组长度#define MAX_SIZE 6//&符号在函数形式参数上代表实际参数的值会随函数操作改变而改变void sort(int[],int &);void print_list(int[]);void swap(int &,int &);int main(int ar原创 2016-11-30 20:12:14 · 394 阅读 · 0 评论 -
排序算法(一)-选择排序(Selection Sort)
C语言实现://// main.cpp// Cpp_test//// Created by PPPPP_Leung on 16/9/15.// Copyright © 2016年 pleung. All rights reserved.//#include //#include //定义常量数组长度#define MAX_SIZE 5//定义define fu原创 2016-11-30 13:45:41 · 655 阅读 · 0 评论