自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(137)
  • 资源 (1)
  • 收藏
  • 关注

原创 Qt播放HTML网页视频

测试环境:WIN7+Qt5.13.0+MSVC_2017_64+QWebEngine难点:Qt自带QWebEngine不可播放HTML网页上视频解决方案:自编译QWebEngine库,并替换Qt原有库需要帮助+qq 498344481效果:

2020-06-11 14:10:57 1868 4

原创 boost::thread的六种使用方法总结

boost::thread有两个构造函数: (1)thread():构造一个表示当前执行线程的线程对象; (2)explicit thread(const boost::function0<void>& threadfunc):      boost::function0<void>可以简单看为:一个无返回(返回void),无参数的函数。这里的函数也可以是类重载op...

2018-04-11 10:22:48 36702 3

原创 基于时间窗的AGV调度算法优化

--------------------------------------------------------重要更新----------------------------------------------------------目前已实现了一种创新优化的时间窗调度方法,创新表现如下:①不需要铺设二维码、磁钉、磁带等固定导轨,属于无轨调度。②不需要提前指定路网,路网不固定,...

2018-03-06 09:10:37 23336 50

转载 人脸识别系统开发(8) -- OpenCV人脸检测

人脸检测使用cv::CascadeClassifier提供的功能实现,首先使用opencv自带的训练数据lbpcascade_frontalface.xml初始化CascadeClassifier,然后调用detectMultiScale得到图片中人脸的Rect.#include "opencv2/objdetect/objdetect.hpp"#include "opencv2/imgpr

2018-01-12 11:51:38 301

转载 人脸识别系统开发(5) -- QML显示QImage

QML显示QImage的流程大致如下:1. 定义一个QQuickImageProvider派生类,实现requestImage和requestPixmap接口,返回需要显示的图片。示例:#pragma once#include #include #include class GrapImageProvider : public QQuickImageProvider, pub

2018-01-11 15:44:32 1570

原创 人脸识别系统开发(9) -- Dlib人脸比对

这里的人脸识别准确的说是人脸比对,特征点比对。opencv是基于机器学习的,需要使用素材进行训练,不符合该系统的要求。所以这里使用dlib来实现。从dlib官方网站http://dlib.net/下载源码,使用cmake生成visual stuido工程,然后编译。编译dlib可能需要安装mkl,mkl下载地址:https://pan.baidu.com/s/1qYHriKs 密码:w

2018-01-11 15:36:59 4901

转载 人脸识别系统开发(4) -- 图片列表功能

在该人脸识别系统中,每次识别过程都会从摄像头实时捕获N(暂定为3)张人脸图片,用这N张图片来和证件上面的人脸进行比对。系统会将每次捕获的人脸图片显示在右侧的列表中,我们可以通过QML中的ListView来实现列表功能。MVC在说ListView功能前,就不得不提MVC设计模式了,因为ListView是采用这个模式来实现的。Model-View—Controller(MVC)是源自Sma

2018-01-11 15:35:30 656

转载 人脸识别系统开发(7) -- cv::Mat与QImage相互转换

#include #include #include QImage cvMat2QImage(const cv::Mat & mat){ // 8-bits unsigned, NO. OF CHANNELS = 1 if (mat.type() == CV_8UC1) { QImage image(mat.cols, mat.rows, QIma

2018-01-11 15:32:15 666

转载 人脸识别系统开发(6) -- OpenCV摄像头预览

OpenCV的使用起来非常人性化,是我见过为数不多的,体量大且在windows平台编译没警告的开源库,开发opencv的科学家是真的严谨。 这里OpenCV使用的版本是2.4.13.3,使用cmake生成visual stuido工程,编译即可。OpenCV官方提供了丰富的示例,包括摄像头预览、人脸检测、人脸比对等。 使用opencv操作USB摄像头,用户只需要指定设备ID即可:

2018-01-11 15:31:00 470 1

转载 人脸识别系统(3)--C++与QML混合编程

使用Qt Quick技术可以快速的构建流畅的界面,而且具有动画等各种绚丽的效果。但它也有很多局限性,比如在网络访问、硬件操作、文件处理等方面,所以在很多时候我们需要混合使用C++和QML,比如使用QML构建界面,使用C++来实现非界面的业务逻辑等。这样也就涉及到了QML和C++之间的交互了。其实,QML的很多基本类型本来也是通过C++来实现的,比如Item对应QQuickItem类,Image对应

2018-01-11 15:27:25 331

转载 人脸识别系统开发(2)--QML基础语法

人脸识别系统的界面通过QML来实现,本文以代码注释的形式来介绍QML的基础语法。 若需要了解相关布局、控件的详细用法可以参考Qt5的在线文档:http://doc.qt.io/qt-5/,Qt官方提供了详细的示例。QML的教程可以参考《Qt Quick核心编程》qml文件可以直接使用qmlscene.exe(所在目录参考C:\Qt\Qt5.6.3\5.6.3\msvc2015\bi

2018-01-11 15:25:39 422

转载 人脸识别系统开发(1)--系统及开发环境介绍

一、开发环境介绍Visual Studio 2015Qt 5.6.3 (该版本及以上版本都可以)dlib-19.7opencv-2.4.13.3-vc14mkl_2018.0.124 (编译dlib时需要)mkl下载地址:https://pan.baidu.com/s/1qYHriKs 密码:wl6zVisual studio+Qt的开发环境搭建参考:Visual Stud

2018-01-11 15:22:24 842 1

原创 memcpy与strcpy的区别

原型:void *memcpy(void *memTo,const void *memFrom,size_t size)char *strcpy(char *dst,constchar *src);相同点:1、strcpy与memcpy都可以实现拷贝的功能不同点:1、复制的内容不同。strcpy只能复制字符串,而memcpy可以复制任意内容,例如字符数组

2018-01-10 16:49:28 477

原创 protobuf之string类型的理解与使用

1、首先纠正一个大多数人都有的一个误区:      std::string遇到'\0'并不会被截断!2、举个例子论证1#include #include int main(){ std::string temp = "abc\0def"; std::cout<<temp.length()<<std::endl;//没错,和你想的一样,输出是3.原因是:temp初始化是用了

2018-01-10 12:04:18 4155

原创 SQlite存取图像数据总结

需要源码的评论区留言1、首先利用openCV读取图像cv::Mat img = cv::imread("/home/hjj/demo.jpg",1);2、在SQlite创建的表中增加一个BLOB类型的字段,用于存储图像数据。如字段id INTEGER, image BLOBstd::string sql = std::string("CREATE TABLE IF NO

2018-01-10 09:42:27 5306 7

原创 OpenCV Error: Unspecified error (The function is not implemented...

Ubuntu16.03 OpenCV问题:OpenCV Error: Unspecified error (The function is not implemented...解决方案://首先查看是否已安装gtk2.0sudo aptitude search libgtk2.0-dev//结果应该像这样:i libgtk2.0-dev - dev

2018-01-06 16:05:37 3657 2

原创 Qt中openGL显示cv::Mat图像问题

迫不及待写这篇博客了,因为它整整消耗了我一天的时间,没吃饭没午睡......遇到的问题是:无法在Qt的openGL中显示Mat图像原因很简单:中间用到的gRPC通信协议,图像数据的传输用的是std::string类型。也就是说,发送端图像数据是Mat,传输过程是string,接收端是char*。主要原因是Mat转换为std::string是出错,主要原因是:Mat src = imre

2018-01-06 15:55:20 2548

原创 C++ map遍历

#include #include using namespace std;int main() { map _map; _map[0] = 1; _map[1] = 2; _map[10] = 10; map::iterator iter; iter = _map.begin(); while(iter != _map.end(

2018-01-04 15:48:05 688

原创 char数组和char*初始化

char*动态分配:用c语言中的(char*)malloc(sizeof(char)*n),或c++中的new char(n);char数组初始化初始化char str[10]="Hello";char str[10]={'H','e','l','l','o','\0'};char str[10]={'H'};char str[10]={0

2017-12-27 15:55:54 49740

转载 boost::lexical_cast万能转换的使用

提示:虽然在c中可是使用类似于atoi之类的函数对字符串转换成整型,但是我们在这儿还是推荐使用这个函数如果转换发生了错误,lexical_cast会抛出一个bad_lexical_cast异常,因此程序中需要对其进行捕捉。下面是程序示例:[cpp] view plain copy #include     #include         usi

2017-12-26 16:42:31 336

原创 protobuf3.0的新变化--无法设置默认值

简单记录下protocol buffer3.0的 一些变化。protobuf的开源地址为:https://github.com/google/protobufprotocol compiler下载地址为:https://github.com/google/protobuf/releases官方定义message类型的例子:syntax="proto3"message Searc

2017-12-25 15:46:25 22185

原创 C++11之tuple的使用

本文讨论的是在C++ 11标准下使用tuple在C++中的tuple和python语言中是类似的,是一个强大的允许存放多个不同类型数据的容器,是对pair的泛化。要在C++中使用tuple,首先需要引用头文件tuple及名空间std。和tuple相关的一共有4个函数,分别介绍1. make_tuple: 用于创建tuple[cpp] view plain

2017-12-25 11:20:23 1908

原创 直接初始化与拷贝(复制)初始化

std::set和std::map都有一个insert和emplace成员函数,那么,他们的区别是什么的?他们都往 set或map 里增加一个元素,区别在于新元素的构造上。emplace 使用直接构造,insert 使用复制(拷贝)构造。那么直接构造和复制构造有什么区别呢?认识这两种初始化(构造)有助于我们加深对语言的理解,可以更好的优化代码~我们常见的几种初始化的

2017-12-25 11:11:59 666

原创 on update cascade 和on delete cascade 的区别

这是数据库外键定义的一个可选项,用来设置当主键表中的被参考列的数据发生变化时,外键表中响应字段的变换规则的。update 则是主键表中被参考字段的值更新,delete是指在主键表中删除一条记录:on update 和 on delete 后面可以跟的词语有四个no action , set null , set default ,cascadeno action 表示 不做任何操

2017-12-23 09:54:37 1896

原创 boost::bind的理解与使用

最近在几经波折之后,终于对于boost::bind有点理解了。对于习惯了其他语言的人来说,boost::bind是个挺神奇的东西,它可以将你的方法适配成任何其他的方法。其实这得益于c++的模板以及操作符重载,去看boost::bind的实现就会发现它是一个有n多重载的函数,这些重载主要是为了适应函数的参数个数。 其实boost::bind的原理是函数对象,而函数对象就是一个重载了()操作符

2017-12-21 12:27:51 8082

原创 SQlite3编程总结

|SQLite3简介 SQLite3只是一个轻型的嵌入式数据库引擎,占用资源非常低,处理速度比Mysql还快,专门用于移动设备上进行适量的数据存取,它只是一个文件,不需要服务器进程。常用术语:表(table)、字段(column,列,属性)、记录(row,record)。|SQL(structured query language)语句 特点:不区分大小写,每条语句后加";"结尾。

2017-12-20 19:12:08 430

原创 Qt SQlite实现级联删除

#include "mainwindow.h"#include "ui_mainwindow.h"#include "QSqlDatabase"#include "qdebug.h"#include "QSqlQuery"MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::Ma

2017-12-07 19:50:53 824

原创 SQLite 约束

SQLite 约束约束是在表的数据列上强制执行的规则。这些是用来限制可以插入到表中的数据类型。这确保了数据库中数据的准确性和可靠性。约束可以是列级或表级。列级约束仅适用于列,表级约束被应用到整个表。以下是在 SQLite 中常用的约束。NOT NULL 约束:确保某列不能有 NULL 值。DEFAULT 约束:当某列没有指定值时,为该列提供默

2017-12-07 16:38:36 274

转载 数据结构之最短路径(Floyd)

上一篇文章我们通过迪杰斯特拉算法解决了从某个源点到其余各顶点的最短路径问题。从循环嵌套很容易得到此算法的时间复杂度为O(n^2)。可是怎么只找到从源点到某一个特定终点的最短路径,其实这个问题和求源点到其他所有顶点的最短路径一样复杂,时间复杂度依然是O(n^2)。    此时比较简单方法就是对每个顶点当作源点运行一次迪杰斯特拉算法,等于在原有算法的基础上,再来一次循环,此时整个算法的时间复杂度为O...

2017-09-19 16:13:46 4155

原创 指针和const限定符

1、指向const对象的指针      const double *cptr;      const double pi = 3.14;      cptr = π注:1、C++语言强制要求指向const对象的指针也必须具有const特性。       2、不能使用void*指针保存const对象的地址,必须使用const void*类型的指针保存const对象的地址。

2017-08-31 17:45:21 289

原创 内联函数

const string &shorterString (const string &s1, const string &s2){ return s1.size() < s2.size() ? s1 : s2;}为这样的小操作定义一个函数的好处是:·阅读和理解函数shorterString的调用,要比读一条用等价的条件表达式取代函数调用表达式并理解它的含义要容易得多。·

2017-08-31 15:08:44 206

原创 Tree Widget控件获取指定行指定列的内容

获取当前行的第n子行内容如下:ui->treeWidget->->currentItem()-> child(n)->text(0) ;   QTreeWidgetItem * QTreeWidgetItem::child(int index) constReturns the item at the given index in the list of the item'

2017-08-31 10:41:12 8398 1

转载 QT中设置QTreeWidget某一列可编辑

大家都知道,在Qt中, QTreeWidget都是QTreeWidgetItem的形式来组织的,也就是说如果单独设置属性的话,可以使得某一行可以编辑或者不可编辑 QTreeWidgetItem*->setFlags(Qt::ItemIsEnabled | Qt::ItemIsSelectable | Qt::ItemIsEditable);// 设置某一行的内容可编辑。 这里给大家

2017-08-31 10:23:20 8828 4

原创 C++实现类似于JAVA的接口

C++可以用纯虚函数实现类似于JAVA中接口的功能:class Client {public: void process() { msg_ = read();//假设read返回string类型数据 if(interface) { interface_->pose_status(msg);

2017-08-30 19:43:43 2392

转载 Qt OpenGL教程 (非常详细)

原文: http://qiliang.NET/old/nehe_qt/Qt OpenGL教程最近一段时间除了学习Qt,翻译Qt文档之外,由于工作和兴趣的原因,开始着手看Qt OpenGL编程。在网上搜索了有关OpenGL的教程,发现NeHe的OpenGL教程的还很不错,作者是NeHe。上面有很多种语言的实现,但是没有Qt和Gtk的,所以我就想着手写这个Qt OpenGL教程,每课的内容

2017-08-30 12:10:22 14785 8

原创 类成员的指针的使用

demo:class Screen {public: typedef std::string::size_type index; char get() const; char get(index ht, index wd) const;private: std::string contents; index cursor;

2017-08-30 12:08:21 562

原创 static类成员

1、static成员函数没有this形参,它可以直接访问所属类的static成员,但不能直接使用非static成员。2、在成员申明前加上关键字static将成员设为static。static成员遵循正常的共有/私有访问规则。class Account {public: void applyint() {amount += amount * interestRate;} s

2017-08-24 11:51:27 384

原创 友元

友元(friend)机制允许一个类将对其非公有成员的访问权限授予指定的函数或类。      元可以是普通的非成员函数,或其他类的成员函数,或整个类。将一个类设为友元,友元类的所有成员函数都可以访问授予友元关系的那个类的非公有成员。      当我们将成员函数申明为友元时,函数名必须用该函数所属的类名字加以限定。

2017-08-24 10:40:46 225

转载 Qt界面添加菜单,工具栏以及状态栏

原文:http://qzher.com/?p=592Qt和MFC在架构上有些不一样MFC基本上就是单文档结构/多文档结构,以及基于对话框应用程序而Qt就是Widgets,以及Quick应用程序。而且这两种应用程序,都可以直接通过新建一个空的qmake应用程序menuToolbarStatusBar,再添加cpp,ui或qml,都能达到自己想要的要求而

2017-08-01 23:13:37 5186

原创 将Qt动态链接库生成的exe及依赖dll打包方法

将Qt 动态链接生成的exe及依赖dll打包方法Qt静态编译链接生成的exe文件,不需依赖一堆dll,可以独立运行,发布很方便。但绝大多数用的都是Qt开源版本,如果用静态链接,会有些限制。那有没有办法即能享受静态编译的方便,又不受开源许可的限制呢?方法之一,就是用动态编译,然后把exe和需要的dll整合成一个文件,问题就解决了。具体步骤:一,先动态编译链接,生成exe文件

2017-07-18 10:16:11 953

自编译QWebEngineView库实现HTML网页视频播放.zip

打包文件中包括bin和lib文件夹,分别包含若干个.dll和.lib文件。首先你需要下载Qt5.13.0版本的Qt,下载地址:https://download.qt.io/official_releases/qt/5.13/5.13.0/ 其次,将下载包中的.dll与.lib文件替换掉Qt5.13.0中对应的文件。.dll文件放入位于D:\QT\Qt5.13.0\5.13.0\msvc2017_64\bin目录下,.lib放入D:\QT\Qt5.13.0\5.13.0\msvc2017_64\lib目录下,亲测有效。

2020-06-11

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除