自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

会飞的鱼

学生狗一个,开此博客只为了记录自己的学习过程

  • 博客(44)
  • 收藏
  • 关注

原创 提高编程能力 算法练习1

/*给定长度小于100的一个字符串,区分大小写的情况下统计其中字母的个数,并按照由大到小的顺序输出.当字母个数一样时,按照把先出现的字母放在前面.当字符串中没有字母时,则不要输出.*/#include <iostream>#include <string>#include <vector>#include <map>#include <unordered_map>#include <algorithm>bool.

2020-05-29 23:47:07 231

原创 c++ 简单socket编程

1.使用多线程对每个连接进行处理2.使用成员函数指针对消息的内容进行处理server.cpp#include<iostream>#include<thread>#include<stdio.h>#include<sys/socket.h>#include<sys/types.h>#include<netinet/in.h>#include<arpa/inet.h>#include <unistd

2020-05-19 07:59:14 554

原创 设计模式一:工厂模式

#include<iostream>#include<vector>#include<memory>using namespace std;typedef enum TypeProduct{ enumProductA, enumProductB, enumProductC}PRODUCTTYPE;class Product{publ...

2020-05-11 22:51:31 167

原创 c++线程池 简洁安全的线程池

#pragma once#include <mutex>#include <condition_variable>#include <functional>#include <queue>#include <thread>class fixed_thread_pool {public: explicit fixed_th...

2020-05-09 07:58:46 233

原创 python3.7以后 协程的使用方法 asyncio

网上找了很多python的asyncio的示例,很多都是用# 获取EventLoop:loop = asyncio.get_event_loop()# 执行coroutineloop.run_until_complete(hello())loop.close()通过create_future向里面添加task的方法来进行异步IO调用.这种方法显然不是很好理解,在python3.7中...

2020-01-07 23:06:48 2991 1

原创 c+11 多线程async、future、packaged_task、promise

1 std::async std::future创建后台任务并返回值目的:希望线程返回一个结果std::async是个函数模板,用来启动一个异步任务,启动起来一个异步任务。什么叫“启动一个异步任务”,就是自动创建一个线程并开始执行对应的线程入口函数,它返回一个std::future对象,这个std::future对象里面就含有线程函数返回的结果,我们可以通过调用std::future对象的成员...

2019-12-02 23:05:09 123

原创 c++ 多线程 条件变量condition_variable(生产者消费者示例)

#include <iostream>#include <string>#include <thread>#include <list>#include <mutex>#include <condition_variable>class MesProcess{public: void Inmsglis...

2019-12-01 20:39:20 438

原创 c++ 多线程unique_lock详解

1 unique_lock取代lock_guardunique_lock是个类模板,工作中,一般lock_guard(推荐使用);lock_guard取代了mutex的lock()和unlock();unique_lock比lock_guard灵活很多,效率上差一点,内存占用多一点。2 unique_lock的第二个参数lock_guard可以带第二个参数std::lock_guard&...

2019-11-28 23:37:06 347

转载 c++拷贝构造函数详解

1 什么使拷贝构造函数首先对于普通类型的对象来说,它们之间的复制是很简单的,例如:int a=100; int b=a;而类对象与普通对象不同,类对象内部结构一般较为复杂,存在各种成员变量。下面看一个类对象拷贝的简单例子。#include<iostream>using namespace std;class CExample{private: int a;pu...

2019-11-28 23:15:52 655

原创 c++ 多线程编程 共享数据的保护即互斥量的用法

1.互斥量(mutex)的基本概念保护共享数据,操作时,某个线程用代码把共享数据锁住、然后操作数据、最后解锁;其它想操作共享数据的线程必须等待解锁;互斥量是个类对象,理解成一把锁,多个线程尝试用lock()成员函数来加锁,只有一个线程能锁成功(成功的标志是lock()函数返回);如果没锁成功,那么这个流程卡在lock(),不断的尝试去锁这把锁头;互斥量使用要小心,保护数据不多也不能少,少了,...

2019-11-27 23:02:36 223

原创 c++ 多线程编程 创建线程后的两种方式join和detach以及创建线程的方式

1. 线程的两种状态一般来说程序开始的入口就是main函数,此时main函数就是主线程,所以自己创建的线程也是从一个函数开始的(初始函数),一旦这个函数运行结束,就表示这个线程结束了。整个进程是否执行完毕的标志是主线程是否执行完,如果主线程执行完毕了,就代表整个进程执行完毕了!那么现在就存在了一个一个问题,自己创建的线程是想在进程结束之前运行结束,还是想在进程结束之后继续运行。这就是join和...

2019-11-26 23:45:24 555

原创 使用rapidjson实现未知json数据,拿到每一个key和value

如果已知json的key便很容易能够从json得字符串中解出value值,但是在未知key的情况下,便只能遍历json字符串,找到所需要的值使用rapidjson遍历字符串代码如下:#include<iostream>#include"rapidjson/document.h"#include"rapidjson/writer.h"#include"rapidjson/st...

2019-11-26 22:56:32 3223

原创 使用boost进行base64编码所踩的坑

Base64编码原理时把3字节的二进制数据编码为4字节的文本数据,长度增加33%,如果要编码的二进制数据不是3的倍数,会在最后剩下的1个或2个字节用\x00字节在末尾补足,然后在编码的末尾加上1或者2个=号。所以在进行Base64进行解码时,得出得解码后得string得size有时候会比原始得string 多一个或者两个长度,使用以下代码便可以避免出现这个问题。#include <bo...

2019-11-26 00:09:07 1371

原创 c++多线程编程 进程、线程的概念

1. 并发、线程、进程的概念1.1并发两个或者多个任务同时发生:一个程序同时执行多个独立的任务;单核cpu的计算机在某一时刻只能指行一个任务,由操作系统调度,进行多次的任务切换,产生并发的假象,这种切换是要有时间的开销的,比如操作系统要保存切换时的各种状态、执行进度等信息,切换回来时要复原这些信息。随着硬件的发展,现在出现了多核处理器,在一块芯片上有多个核,能够实现真正的并发执行多个任务。...

2019-11-25 23:56:27 240

原创 图像增强方法

图像增强概念一般的图像增强方法根据增强处理过程所在的空间不同,可分为基于空域和频域的方法。基于空域的方法直接对图像进行处理,包括对比度增强和图像平滑;基于频域的方法是在图像的某种变换域内对图像的变换系数进行修正,然后再反变换到原来的空域,得到增强的图像。主要目的:一、是为了改善图像的视觉效果,提高图像的清晰度;二、是针对给定图像的应用场合,突出某些感兴趣的特征,抑制不感兴趣的特征,以扩大图...

2019-03-26 14:54:49 30022

原创 目标检测的图像特征提取之(二)Haar特征

https://blog.csdn.net/playezio/article/details/80471000

2019-03-20 14:24:47 523

转载 目标检测的图像特征提取之(一)HOG特征

1、HOG特征: 方向梯度直方图(Histogram of Oriented Gradient, HOG)特征是一种在计算机视觉和图像处理中用来进行物体检测的特征描述子。它通过计算和统计图像局部区域的梯度方向直方图来构成特征。Hog特征结合SVM分类器已经被广泛应用于图像识别中,尤其在行人检测中获得了极大的成功。需要提醒的是,HOG+SVM进行行人检测的方法是法国研究人员Dalal在2005...

2019-03-20 11:35:12 543

转载 理解图像中基本概念:色调、色相、饱和度、对比度、亮度

对比度:对比度指不同颜色之间的差别。对比度越大,不同颜色之间的反差越大,即所谓黑白分明,对比度过大,图像就会显得很刺眼。对比度越小,不同颜色之间的反差就越小。亮度:亮度指照射在景物或图像上光线的明暗程度。图像亮度增加时,就会显得耀眼或刺眼,亮度越小时,图像就会显得灰暗。色调:色调是各种图像色彩模式下原色的明暗程度,级别范围从0到255,共256级色调。例如对灰度图像,当色调级别为255时...

2019-03-08 10:08:20 4096

原创 用辗转相除法求两个数的最大公约数

#define _CRT_SECURE_NO_DEPRECATE#include&lt;stdio.h&gt;int main(){ /* a b t 12 18 12 18 12 6 12 6 0 6 0 */ int a, b, t; scanf("%d%d", &amp;a, &amp;b); while (b !=...

2018-09-25 20:16:26 3497

原创 视频中移动对象的统计二——移动对象的计数

在上次博客的基础上,继续完成视频中移动对象的统计。#include&lt;iostream&gt;#include&lt;opencv2/opencv.hpp&gt;using namespace std;using namespace cv;void main( ){ VideoCapture capture; capture.open("E:\\video.av...

2018-09-03 17:17:03 887 1

原创 视频中移动对象的统计一——背景消除的建模

对视频的操作是把视频读成一张张的图片,在图片的基础上进行操作。图片背景的消除就是图像的分割。这里用高斯混合和KNN两种方法进行操作,具体的数学原理可以参考其他博客。 下面是代码演示:#include&lt;iostream&gt;#include&lt;opencv2/opencv.hpp&gt;using namespace std;using namespace cv;i...

2018-09-03 16:51:31 388

原创 Kmeans方法——图像分割

Kmeans算法是非常经典的聚类算法,在数据挖掘中kmeans经常用来做数据预处理,在图像处理中也可以用作图像的分割。opencv中提供了完整的kmeans算法,其函数原型为: double kmeans( InputArray data, int K, InputOutputArray bestLabels, TermCriteria criteria, int attempts, int f...

2018-08-27 18:29:42 10766 1

原创 图像特征提取与检测——Shi-Tomasi角点检测

opencv提供了goodFeaturesToTrack函数用来实现Shi-Tomasi算子,其API函数接口为 void cv::goodFeaturesToTrack( InputArray _image, OutputArray _corners, int maxCorners, double qualityLevel, double minDistance, InputArr...

2018-08-25 19:02:17 1368

原创 图像特征提取与检测——Harris角点检测

OpenCV中的Harris角点检测: C++:voidcornerHarris(InputArraysrc,OutputArraydst,intblockSize,intksize,doublek,intborderType=BORDER_DEFAULT)参数的意义如下: 第一个参数,InputArray类型的src,输入图像,即源图像,填Mat类的对象即可,且需为单通道8位或者浮点型图...

2018-08-25 18:32:57 1333

原创 C++ 中STL基本容器中的vector

vector属于顺序容器,使用时需要包含#includevector 中常用的操作:#include&amp;lt;iostream&amp;gt;#include&amp;lt;vector&amp;gt;using namespace std;//1.定义和初始化vector&amp;lt;int&amp;gt; vec1; //默认初始化,vec1为空vector&amp;lt;int&amp;gt; vec2

2018-07-20 16:52:56 144

原创 tensorflow入门一:tensorflow实现梯度下降

import tensorflow as tfimport matplotlib.pyplot as pltimport numpy as np#构建数据points_num = 100vectors = []#用numpy的正态随机分布函数生成100个点#这些点的坐标值对应线性方程 y = 0.1*x +0.2for i in range(points_num):...

2018-06-01 16:52:32 450

原创 python&opencv 色彩空间及特定颜色物体的追踪

对特定颜色的追踪是基于颜色空间的应用,其原理呢是类似于二值化,显示某一范围内的数值,(基于hsv)。下面是代码演示:import cv2import numpy as npcapture = cv2.VideoCapture('E:\python\VID_20180522_132108.mp4')#读取视频while True: ret, frame = captu...

2018-05-28 19:29:44 3111

原创 python&opencv 图像的双边滤波

双边滤波的操作主要是ccv2.bilateralFilter()函数来操作,它能够保持边界清晰的情况下有效的去除噪声,但是这种操作比较慢。它拥有着美颜的效果: 下面是代码演示:import cv2def bi_demo(image):#高斯双边滤波 dst = cv2.bilateralFilter(src=image, d=0, sigmaColor=100, sigmaSpa...

2018-05-28 18:43:15 21187 2

原创 python&opencv 之图像模糊

使用低通低通滤波器可以达到图像模糊的目的,这对除去噪声有很大的帮助。opencv中提供了三种模糊技术:平均,高斯模糊,中值模糊。他们之间主要是卷积框的不同。 平均模糊的卷积框是由归一化卷积框完成,高斯模糊就是把卷积核变成高斯核,中值模糊是用与卷积框对应像素的中值来替代中心像素的值。下面是代码演示:import cv2import numpy as npdef blu...

2018-05-28 18:22:25 3551

原创 python&opencv视频中人脸的识别

上一篇文章中介绍了静态的人脸的检测,下面介绍动态的即视频中的人脸的检测。 原理与上一篇基本相同,只是把视频读取成一帧一帧的图片。import cv2face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_alt.xml')#haar人脸识别参考上一篇文章face_cascade.load('E:\python\ha...

2018-04-21 12:57:13 2552 2

原创 python&opencv人脸识别及haarcascade_frontalface_alt2.xml文件下载

对于人脸识别,opencv中自带了haar人脸特征分类器。 但是由于我只直接安装的opencv_python-3.3.1-cp36-cp36m-win_amd64.whl文件,所以我并没有找到网上所说的教程,只能另想办法下载。 下面直接给出代码及显示效果,最后给出haarcascade_frontalface_alt2.xml下载地址。import cv2img = cv2.imrea...

2018-04-16 11:11:31 22048 18

原创 python&opencv边界框,最小矩阵和最小闭圆的轮廓

对于最小矩阵,最小闭圆都是对轮廓检测的延续。import cv2import numpy as npimg =cv2.imread('cs1.png',cv2.IMREAD_UNCHANGED)img1 = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)ret,thresh = cv2.threshold(img1,127,255,cv2.TH...

2018-04-07 16:14:21 2095 1

原创 python&opencv轮廓检测及cv2.threshold,cv2.findContours,cv2.cvtColor,cv2.drawContours函数

对与轮廓检测就是cv2.threshold,cv2.findContours,cv2.cvtColor,cv2.drawContours这几个函数的调用。下面就是代码及对这几个函数的解释:import cv2import numpy as npimg = np.zeros((200,200),dtype = np.uint8 )#构造一个两百行两两百列的矩阵img[50:150,...

2018-04-07 16:10:16 2328

原创 python&opencv捕获摄像头的帧

因为捕获摄像头几乎和读取视频文件一模一样,所以这次注释就少点。 下面这个例子,捕获摄像头10s,并生成avi视频:import cv2cameraCapture = cv2.VideoCapture(0)fps = 30#这里是个估值size = (int(cameraCapture.get(cv2.CAP_PROP_FRAME_WIDTH)), int(cam...

2018-04-06 17:33:57 2261

原创 python&opencv读取并写入视屏文件

读取视屏文件的原理和读取图片的原理是一样的。在到达视屏末尾之前,通过VideoCapture类来调用read()函数来获取新的帧,每一帧是一幅基于BGR格式的图形。。然后将一幅图传递给VideoWriter类的write()函数,write()函数会将这幅图加到VideoWriter类所指向的文件中。 下面是一个例子:import cv2videoCapture = cv2.Vid...

2018-04-06 17:17:57 704

原创 python&opencv读取并显示一张图片

读取一张图片用cv2.imread()函数,它有两个参数。 第一个是要读取图片的路径,第二个是怎么读取图片。import cv2import numpy as npimg = cv2.imread('789.jpg',cv2.IMREAD_COLOR)#图在程序的工作路径,只要图片名'''cv2.IMREAD_COLOR:默认参数,读入一副彩色图片,忽略alpha通道cv2...

2018-04-06 16:45:03 3143 2

原创 自学机器学习之sklearn实现决策树和随机森林及其参数的解释

最近一直在补c++的知识,所以好久没有更新了,深深的罪恶感啊。。。今天更新决策树和随机森林,数学推导在书本上都有。所以现在只用sklearn来实现决策树和随机森林。重点在参数的详细解释。。直接上代码:from sklearn.tree import DecisionTreeClassifierfrom sklearn.datasets import load_irisfrom...

2018-04-02 19:28:30 2422

原创 自学机器学习之sklearn实现支持向量机

对于支持向量机,我看了好久也没能看的很明白,里面的理论有点多。所以呢,只能用sklearn来跑跑svm模型了。。下面是代码:(svm支持多类别分类,所以这次还使用iris的数据)from sklearn import svmfrom sklearn.datasets import load_irisfrom sklearn.model_selection import tr...

2018-03-27 14:09:57 1253

原创 自学机器学习之sklearn实现logistic回归

最近一段时间在一边看算法,边补数学,然后用程序来实现算法。这个方法挺有效,对于学习了 一段时间但是感觉还没有入门的人来说这是个比较好的方法。对于sklearn实现算法,算是比教简单。直接导入模块,然后用数据来训练,然后用来预测。下面用sklearn实现logistic回归:因为logistic回归是一个二分类,所以这次使用的数据是乳腺癌的数据(sklearn自带数据)from...

2018-03-21 14:40:32 2968 1

原创 自学机器学习之logistic回归

基于logictic回归和sigmoid函数的分类,sigmoid函数很简单:f(x)= 1/(1+exp(-z)) 其中最主要的就是回归系数的确定, 回归系数的确定就采用最优化的思想:比如牛顿法或者梯度下降(上升), 其中梯度下降就要用到高数中梯度和偏导数的概念,具体的数学可以参考高数书,下面直接上代码。下面代码用python实现logistic回归,主要参考机器学习实战:fr...

2018-03-21 11:35:06 213

空空如也

空空如也

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

TA关注的人

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