- 博客(23)
- 资源 (1)
- 收藏
- 关注
原创 基于虹软人脸识别,实现本地视频流或RTSP视频流实现人脸追踪(C++)
或RTSP视频流???一、前言1. 文章内容本文主要基于C++语言,利用虹软人脸识别SDK,来实现本地视频流的人脸追踪。实现内容包括实时检测摄像头的图像帧,将摄像头的每个人脸特征与人脸库中的多个人脸信息特征进行对比,实现多对多的人脸跟踪。2. 关键技术2.1 C++C++ 是一种中级语言,它是由 Bjarne Stroustrup 于 1979 年在贝尔实验室开始设计开发的。. C++ 进一步扩充和完善了 C 语言,是一种面向对象的程序设计语言,并且C++可以很好地应用在多种平台上,比如:Win
2021-09-15 17:16:01
2072
6
原创 opencv学习笔记(十)-- 图像模糊去噪(中值滤波和双边滤波)
文章目录中值滤波双边滤波之前我们学习了均值滤波和高斯滤波,并且在opencv中进行了应用,接下来还有两种滤波方式,中值滤波和双边滤波中值滤波双边滤波
2021-09-12 21:31:35
2015
原创 opencv学习笔记(八)-- 在图像上绘制形状和文字
CV::Point以及CV::ScalarPoint表示的是2D平面上的一个点(x, y),使用方式如下:第一种Point p1;p1.x = 100;p1.y = 50;p1表示的就是坐标为(100,50)的点。第二种Point p2 = Point(100, 80);p2表示的是坐标为(100,80)的点。同样 Point(100,80)也可直接表示坐标为(100,80)的点。Scalar表示的是一个四个元素的向量,使用方式为:Scalar(b, g, r);b表示的是blue
2021-08-25 23:14:36
362
原创 opencv学习笔记(七)-- 调整图像亮度和对比度
基本概念图像变换可以看作如下两种:像素变换 - - 点操作邻域操作 - -区域调整图像的亮度和对比度属于是像素变换 – 点操作对像素点值的操作!重要的APIMat new_image = Mat::zeros(image.size(),image.type());作用是创建一个和原图大小和类型一致的空白图像、像素值初始化为0。saturate_cast<uchar>(value);作用是确保值大小范围为0~255之间。Mat ...
2021-08-23 13:39:36
242
原创 python调用C++动态链接库之ctypes(共享结构体、字符串、Mat类型)
说明本文章所用环境为:linux系统:ubuntu18.04版本opencv版本:python3.4.5.20C++3.4.5文章目录说明
2021-08-04 19:16:15
4117
8
原创 ctypes应用
ctypes是Python的一个外部库,提供和C语言兼容的数据类型,可以很方便地调用DLL中输出的C接口函数。1.加载dll和取出函数from ctypes import * dll = cdll.LoadLibrary(dllpath) #dllpath是字符串dll = windll.LoadLibrary(dllpath)上面两行使用哪一行,取决于导出函数的调用规范(cdecl或stdcall).也可以使用下面两行代替:dll = CDLL(dllpath) #注意和上面大
2021-08-03 22:28:16
491
原创 C++入门学习笔记之复合类型
文章目录4 复合类型4.1 数组4.1.1 数组声明4.1.2 数组索引4.1.3 数组初始化4 复合类型4.1 数组数组是一种数据格式,可以存储多个同类型的值4.1.1 数组声明创建数组可使用声明语句,声明语句需要指出下面三点:存储在每个元素中的值的类型数组名数组中的元素个数类似于声明简单变量,只需要通过添加中括号就能完成数组的声明。short month;//声明一个short类型的简单变量monthshort months[12];//声明一个可以存储12个short类型元素
2021-07-21 22:30:22
308
原创 Ubuntu18.04 + opencv(C++)虚拟机环境
文章目录在虚拟机创建环境安装Ubuntu系统修改系统语言安装VMware Tools工具设置服务器镜像源更新apt安装谷歌浏览器和搜狗输入法安装vim安装opencv(C++)配置虚拟机摄像头在虚拟机创建环境先去官网下载Ubuntu18.04的iso文件然后打开虚拟机进行配置安装:这里我是用的VM版本是15.5版本点击创建新的虚拟机选择自定义,然后点击下一步不用修改直接点击下一步选择稍后安装操作系统,然后点击下一步选择对应的系统,然后下一步输入虚拟机的名称,选择
2021-07-20 16:05:40
1234
2
原创 C++多线程(八):条件变量condition_variable、wait、notify_one、notify_all
目录条件变量condition_variablenotify_one和notify_all条件变量condition_variablestd::condition_variable实际上是一个和条件相关的类(等待一个条件达成),需要和互斥量配合使用,使用时要生成一个这个类的对象。std::condition_variable my_cond;然后通过使用my_cond的成员函数wait、notify_one、notify_all来进行互斥量的操作。std::unique_lock<std:
2021-07-05 12:33:50
571
原创 C++多线程(七):unique_lock详解
目录unique_lock取代lock_guardunique_lock的第二个参数std::adopt_lockstd::try_to_lockstd::defer_lockunique_lock的成员函数成员函数lock()成员函数unlock()成员函数try_lock()成员函数release()unique_lock所有权的传递(转移)unique_lock取代lock_guardunique_lock是一个类模板,比lock_guard更加灵活,效率上低一点,内存占用大一点首先是uniqu
2021-07-04 23:20:31
9048
1
原创 C++多线程(六):lock()的死锁问题
目录死锁的概念死锁的演示死锁的解决方法std::lock()函数模板死锁的概念死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。解释起来就是:两个线程两把锁,其中一个线程先锁锁头1,再锁锁头2,另外一个线程先锁锁头2,再锁锁头1当第一个线程锁住锁头1时,第二个线程锁住锁头2,此时两个线程都要继续上锁,但是第一个线程无法上锁锁头2,第二个线
2021-07-04 12:32:42
1184
原创 C++多线程(五):创建多个线程以及数据共享问题
创建和等待多个线程vetorvector(称为容器) 是同一种类型的对象的集合,每个对象都有一个对应的整数索引值。先看下面例程:// C++stu_03.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。//本例程用于学习创建多线程以及数据共享问题#include <iostream>#include <windows.h>#include <thread>#include<vector>using namespa
2021-07-04 11:20:04
3310
原创 C++多线程(三):使用类和lambda表达式创建线程
使用类创建线程#include <iostream>#include <windows.h>#include <thread>using namespace std;//创建子线程类class myClassThread{public: void operator()() { cout << "我的class线程开始执行" << endl; Sleep(1000); cout << "我的clas
2021-06-28 23:18:37
1337
2
原创 C++多线程(二):线程的创建和启动
线程的创建、开始和结束主线程从main()函数开始执行,创建的其他线程也要从一个函数开始运行(初始函数),一旦这个函数运行结束,代表线程运行结束1、thread创建线程:添加头文件thread、编写线程函数并在main()函数中添加线程首先编写一个线程函数2、join()3、detach()4、joinable()...
2021-06-28 16:52:24
2400
1
原创 C++多线程(一):基本概念
并发、进程、线程1、并发两个或更多的任务同时发生:一个程序同时执行多个独立的任务单核cpu:某一时刻只能执行一个任务,多任务时要进行多次“任务切换”(不是真正的并发--并发假象)多核cpu:同一时刻可以执行多个任务(硬件并发)。使用并发可以同时执行多个任务,提高性能2、可执行程序windows下后缀为.exe的文件3、进程可执行程序运行起来,就叫创建了一个进程。4、线程每个进程都有一个主线程,主线程是唯一的,一个进程中只能有一个主线程;进程启动后主线程自动启动
2021-06-28 10:59:23
307
原创 opencv学习笔记(六)-- 图像混合
目录线性混合操作相关的API(addWeighted)线性混合操作f0(x)和f1(x)分别代表两幅图片,这种操作就是对两幅图片进行加权平均,α的取值范围是从0到1;相关的API(addWeighted)void addWeighted(InputArray src1, double alpha, InputArray src2, double beta, double gamma,
2021-06-27 23:37:47
103
原创 opencv学习笔记(五)-- 图像操作
目录读写图像读写像素灰度图像像素点的获取读写图像之前已经介绍过的两个函数:imread 可以指定加载为灰度或者RGB图像imwrite保存图像文件,类型由扩展名决定具体介绍可以参考我的另一篇文章:https://blog.youkuaiyun.com/milkhoko/article/details/111997017读写像素灰度图像像素点的获取Scalar intensity_gray = gray_src.at<uchar>(120,200);或者Scalar intensity
2021-01-17 20:13:21
376
原创 opencv学习笔记(四)-- Mat对象
目录Mat对象与IPLImage对象Mat对象的使用May定义数组Mat对象与IPLImage对象Mat对象可以自动分配内存,不存在内存泄露的问题,是面向对象的数据结构,Mat对象分为两个部分,IPLImage是c语言风格的数据结构,需要开发者自己分配内存,进行内存管理,在编写大的程序时很容易造成内存泄漏。Mat对象的使用May定义数组...
2021-01-14 16:02:24
341
原创 opencv学习笔记(一)-- opencv+vs2017环境搭建
opencv+vs2017环境搭建vs2017的安装opencv3.4的安装环境配置添加系统环境变量vs2017中的配置vs2017的安装这里我用一个在线安装包安装,链接如下:https://pan.baidu.com/s/1YB6rbQxMfCBs8IlXS_AkQg 提取码milk我选择的是专业版在线安装,打开之后等一会会出现安装选择界面这里勾选通用windows平台开发和使用C++的桌面开发,其他的可以根据自己的需要勾选,勾选越多需要的空间越大然后选择安装位置,这里我们选择E盘然后点击
2020-12-30 19:30:02
357
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人