C++11 – 封装std::thread,增加子线程启动、暂停、唤起、停止功能
1 封装std::thread,增加子线程启动、暂停、唤起、停止功能 C++标准库的std::thread已经为C++增加了很好的跨平台多线程编程体验,程序员只需要使用标准库std::thread就可以写出很好的多线程并发程序。但是在std::thread中对线程的控制需要自主控制。 我们经常会在子…
- C++
- 2021-10-21
C++ – C++实现Python numpy的矩阵维度转置算法,例如(N,H,W,C)转换为(N,C,H,W)
1 C++实现Python numpy的矩阵维度转置算法,例如(N,H,W,C)转换为(N,C,H,W) 1.1 python中使用numpy进行矩阵维度变换 在python中常常使用numpy的transpose对矩阵的维度进行转换,这里以(N,H,W,C)转换为(N,C,H,W)为例,请看一下代…
- C++
- 2021-10-15
OpenCV – cv::Mat与unsigned char*数组或者float*数组相互转换,cv::Mat与std::vector的相互转换
1 使用常规方法将cv::Mat转换为unsigned char数组或者float数组 通常情况下,在同一个opencv项目传递cv::Mat可直接通过const cv::Mat& img这种方式传递,但是如果需要进行跨语言传递,比如C++传递到C#或者C#传递到C++,那么通常这种情况下需…
- OpenCV
- 2021-10-14
C++ – 函数返回多个返回值的方法总结
1 C++函数如何像python一样返回多个返回值 使用过python的童鞋都知道,在python单个函数中可以返回多个函数值,比如: # -*- coding: utf-8 -*- def return_muliti_value(): return 1,'helloworld',[1,2,3] i…
- C++
- 2021-10-13
OpenCV – 将图片/视频转换为深度学习模型输入格式,BGR通道转RGB,图片归一化,HWC转CHW
1 将图片转换为深度模型输入格式 在C++进行人脸识别、目标检测的过程中,经常是以图片数据作为深度学习模型推理的输入数据的,但是从OpenCV读取的图片数据并不能直接用于深度学习模型的推理过程。 首先,OpenCV读取图片默认使用的是BGR通道排列方式,而深度学习模型一般使用RGB通道排列的方式; …
- OpenCV
- 2021-09-23
C++ – 判断本机文件是否存在的方式总结
C++ - 判断本机文件是否存在的方式总结 由于C++没有像python那样方便的os.path官方库,经常面临着判断一个文件是否在本机上存在都不易用,今天就总结下C++下判断本机文件是否存在的一些方法。 1 通用方法 1.1 使用std::ifstream判断 #include <iostr…
- C++
- 2021-09-15
C++11 – 委托机制的实现TinyDelegate
1 使用C++11实现委托机制 1.1 TinyDelegate类 1.1.1 代码 TinyDelegate.hpp #ifndef TINY_DELEGATE_H #define TINY_DELEGATE_H #include <functional> #include <c…
- C++
- 2021-09-09
C++11 – 使用std::thread在类内部以成员函数作为多线程函数执行异步操作
1 使用std::thread在类内部创建多线程函数 在有些应用场景下,需要在某个类中以某个成员函数作为异步线程函数,或者需要多线程去执行某个耗时操作的成员函数。在这种应用场景下,知道如何在类内部以成员函数创建多线程函数就是一个比较基础的问题。 1.1 代码示例 demo代码如下: #include…
- C++
- 2021-09-09
OpenCV – 将OpenCV视频帧绘制到Win32窗口或者MFC控件上的CvvImage类,包括老版IplImage与新版Mat的绘制
1 老版IplImage 1.1 头文件CvvImage.h #pragma once #ifndef CVVIMAGE_CLASS_DEF #define CVVIMAGE_CLASS_DEF #ifndef RC_OPENCV_2_1_0 #include <opencv/cv.h>…
- OpenCV
- 2021-09-03
Gdi+ – 将OpenCV Mat转换为Gdi+ Bitmap
1 将OpenCV Mat转换为Gdi+ Bitmap 最近需要在桌面程序中将OpenCV的摄像头画面显示到Windows窗口上,看了之前他们的方式都是使用老版的使用IplImage的CvvImage类,或者是使用修改过的使用Mat的CvvImage类,这种方式只适合单独的将摄像头画面显示在窗口上,…
- Windows编程
- 2021-08-26
C++ – std::string与std::wstring相互转换
1 std::string与std::wstring相互转换 1.1 windows上的std::string与std::wstring相互转换 在Windows上,可以使用MultiByteToWideChar和WideCharToMultiByte函数来进行std::string和std::ws…
- C++
- 2021-08-20
计算几何 – C++计算两个二维向量的夹角
1 计算两个二维向量的夹角 #include <iostream> #include <cmath> struct PoseInfo { float x; float y; }; typedef PoseInfo Point2D; typedef PoseInfo Vecto…
- C++
- 2021-08-12