- 博客(27)
- 收藏
- 关注
原创 Clion release版本切换
Cannot generate ‘Release’ into /home/jdoe/project/cmake-build-releaseCMakeCache.txt is found in the project dir, only in-source generation will be performed
2022-09-14 10:45:17
389
原创 C#联合VisionPro开发--添加DLL控件
C#联合VisionPro开发–添加DLL控件DLL自动添加DLL手动添加版本需根据自己电脑安装的版本选择
2020-09-15 11:02:08
2172
2
原创 RandomForestClassifier、SVM、xgboost实现二分类算法
RandomForestClassifier# -*- coding: utf-8 -*-import numpy as npimport pandas as pdimport matplotlib as mplimport matplotlib.pyplot as pltimport csv from sklearn.model_selection import train_test_split # 数据分割from sklearn.preprocessing import Impute
2020-08-24 09:52:49
1112
2
原创 深度学习中常用的激活函数
我们知道深度学习的理论基础是神经网络,在单层神经网络中(感知机),输入和输出计算关系如下图所示:可见,输入与输出是一个线性关系,对于增加了多个神经元之后,计算公式也是类似,如下图:这样的模型就只能处理一些简单的线性数据,而对于非线性数据则很难有效地处理(也可通过组合多个不同线性表示,但这样更加复杂和不灵活),如下图所示:那么,通过在神经网络中加入非线性激励函数后,神经网络就有可能学习到平滑的曲线来实现对非线性数据的处理了。如下图所示:因此,神经网络中激励函数的作用通俗上讲就是将多个线性输入.
2020-08-23 14:50:53
337
1
原创 OPENCV面试题
1.opencv中RGB2GRAY是怎么实现的答:以R、G、B为轴建立空间直角坐标系,则RGB图的每个象素的颜色可以用该三维空间的一个点来表示,而Gray图的每个象素的颜色可以用直线R=G=B上的一个点来表示。于是rgb转gray图的本质就是寻找一个三维空间到一维空间的映射,最容易想到的就是射影(即过rgb空间的一个点向直线R=G=B做垂线),事实上Matlab也是这样做的,输出的灰度图像是RGB三种颜色通道的加权和;Gray = 0.29900 * R + 0.58700 * G + 0.11400
2020-08-13 23:27:57
13282
1
原创 cv2.dnn.blobFromImage函数
深度学习中OpnenCV的blobFromImage是对输入图像做了什么呢?在PyImageSearch有许多读者好奇,blobFromImage到底是对图像做了了什么样的处理 ?今天我就来告诉大家。你也必定明白,为了从深度神经网络获得预测结果,你首先需要对你的数据进行预处理。在深度学习和图像分类领域,预处理任务通常包含:1.减均值(Mean subtraction)2.按比例缩放(Scaling by some factor)OpenCV新的神经网络模块dnn包含两个预处理函数,为通过预训练
2020-08-02 20:32:13
2496
原创 目标跟踪-KCF目标跟踪方法
opencv已经实现了的追踪算法OPENCV_OBJECT_TRACKERS = { "csrt": cv2.TrackerCSRT_create, "kcf": cv2.TrackerKCF_create,#目标追踪较为重要的论文 "boosting": cv2.TrackerBoosting_create, "mil": cv2.TrackerMIL_create, "tld": cv2.TrackerTLD_create, "medianflow": cv2.TrackerMedianF
2020-08-01 23:48:32
1964
转载 surf和sift算法被申请专利后部分opencv版本无法使用后的安装pycharm+opencv使用surf和sift算法教程
surf和sift算法被申请专利后部分opencv版本无法使用后的安装pycharm+opencv使用surf和sift算法教程https://blog.youkuaiyun.com/qq_41840148/article/details/101611176
2020-08-01 22:32:15
902
1
原创 背景建模与光流估计
背景建模帧差法由于场景中的目标在运动,目标的影像在不同图像帧中的位置不同。该类算法对时间上连续的两帧图像进行差分运算,不同帧对应的像素点相减,判断灰度差的绝对值,当绝对值超过一定阈值时,即可判断为运动目标,从而实现目标的检测功能。帧差法非常简单,但是会引入噪音和空洞问题混合高斯模型在进行前景检测前,先对背景进行训练,对图像中每个背景采用一个混合高斯模型进行模拟,每个背景的混合高斯的个数可以自适应。然后在测试阶段,对新来的像素进行GMM匹配,如果该像素值能够匹配其中一个高斯,则认为是背景,否则认为
2020-07-16 23:54:09
643
原创 8图像特征-sift和特征匹配
Scale Invariant Feature Transform(SIFT)图像尺度空间在一定的范围内,无论物体是大还是小,人眼都可以分辨出来,然而计算机要有相同的能力却很难,所以要让机器能够对物体在不同尺度下有一个统一的认知,就需要考虑图像在不同的尺度下都存在的特点。尺度空间的获取通常使用高斯模糊来实现不同σ的高斯函数决定了对图像的平滑程度,越大的σ值对应的图像越模糊。高斯差分金字塔(DOG)高斯差分金字塔(DOG)DoG空间极值检测为了寻找尺度空间的极值点,每个像素点要和其
2020-07-13 22:49:03
322
原创 7图像特征-harris角点检测
图像特征-harris角点检测基本原理角点x、y都剧烈变化I(u,v)是原来的灰度值 W(u,v):不同位置点权重,中心的权重较大代表BR接近于0为平坦区 R小于零边界 R式后面部分参数一般选较小 R大于0则为角点最后加上极大值抑制来选取cv2.cornerHarris()img: 数据类型为 float32 的入图像blockSize: 角点检测中指定区域的大小ksize: Sobel求导中使用的窗口大小k: 取值参数为 [0,04,0.06
2020-07-11 20:41:01
175
原创 6项目实战-文档扫描OCR识别
scan.py# 导入工具包import numpy as npimport argparseimport cv2# 设置参数ap = argparse.ArgumentParser()ap.add_argument("-i", "--image", required = True, help = "Path to the image to be scanned") args = vars(ap.parse_args())def order_points(pts): # 一共4个坐
2020-07-11 16:34:24
545
1
原创 K-Means算法及多种优化改进算法,聚类模型评估、面试总结
一、聚类分析聚类分析是根据在数据中发现的描述对象(数据)及其关系的信息,将数据划分成有意义或有用的组(簇)。其目标是:组内的对象相互之间是相似的(相关的),而不同组中的对象是不同的(不相关的);组内的相似性(同质性)越大,组间差别越大,聚类就越好。二、不同的聚类类型1层次的(嵌套的)与划分的(非嵌套的)划分聚类:简单地将数据对象集划分成不重叠的子集(簇),是的每个数据对象恰在一个子集中层次聚类:允许簇具有子簇;层次聚类是嵌套簇的集合,组成一棵树2互斥的、重叠的与模糊的互斥的:每个对象都指派
2020-07-10 10:25:19
4783
1
原创 5项目实战-信用卡数字识别
信用卡照片数字匹配照片myutils.pyimport cv2def sort_contours(cnts, method="left-to-right"): reverse = False i = 0 if method == "right-to-left" or method == "bottom-to-top": reverse = True if method == "top-to-bottom" or method == "bott
2020-07-09 22:30:44
458
原创 理解集成学习Boosting思想之GBDT、XGBoost,附带案例
前言前面我们介绍了使用 Boosting 思想的 AdaBoost ,它是通过前一轮决策的结果来给样本设置权重,决策正确的权重减小,决策错误的权重增加;然后将加权后的数据集输入下一个弱学习器训练,直到达到训练停止条件。Boosting 思想的GBDT、XGBoost,在目前的竞赛和工业界中使用非常频繁,能够有效的应用到分类、回归,更是因为近几年被应用于构建搜索排序的机器学习模型而引起广泛关注。虽然用起来不难,但是要想完整理解它的原理及推导不是那么容易,本篇尽可能通过简单的方式来介绍。一、提升树模型提
2020-07-09 10:44:14
1065
1
原创 argparse.ArgumentParser()在pycharm中参数设置问题
argparse是一个Python模块:命令行选项、参数和子命令解析器argparse模块可以让人轻松编写用户友好的命令行接口。程序定义它需要的参数。然后argparser将弄清如何从sys.argv解析出那些参数。argparse模块还会自动生成帮助和使用手册,并在用户给程序传入无效参数时报出错误信息。使用流程1. 创建解析器parser = argparse.ArgumentParser(description=‘Process some intergers.’)使用argparser的第
2020-07-08 23:42:55
9608
原创 4图像处理-直方图和傅里叶变换
直方图(统计像素点个数)cv2.calcHist(images,channels,mask,histSize,ranges)images: 原图像图像格式为 uint8 或 float32。当传入函数时应 用中括号 [] 括来例如[img]channels: 同样用中括号括来它会告函数我们统幅图 像的直方图。如果入图像是灰度图它的值就是 [0]如果是彩色图像 的传入的参数可以是 [0][1][2] 它们分别对应着 BGR。mask: 掩模图像。统整幅图像的直方图就把它为 None。但是如 果你想统
2020-07-07 23:28:18
612
原创 3图像处理-图像金字塔、轮廓检测
图像金字塔高斯金字塔拉普拉斯金字塔高斯金字塔:向下采样方法(缩小)从下往上 相当于卷积高斯金字塔:向上采样方法(放大)注意:放大和缩小都会带来部分信息丢失img=cv2.imread("AM.png")cv_show(img,'img')print (img.shape)#(442, 340, 3) 输入图片up=cv2.pyrUp(img)#pyramid 金字塔 放大cv_show(up,'up')print (up.shape)#(884, 680, 3)down
2020-07-07 22:35:33
393
原创 2图像处理--阈值与平滑处理、图像形态学处理、图像梯度处理、边缘检测
阈值与平滑处理HSV: hsv=cv2.cvtColor(img,cv2.COLOR_BGR2HSV)H - 色调(主波长)。S - 饱和度(纯度/颜色的阴影)。V值(强度)图像阈值ret, dst = cv2.threshold(src, thresh, maxval, type)src: 输入图,只能输入单通道图像,通常来说为灰度图dst: 输出图thresh: 阈值maxval: 当像素值超过了阈值(或者小于阈值,根据type来决定),所赋予的值type:二值化操作的类型,包含
2020-07-07 10:13:47
917
原创 1 图像基本操作
#环境为anaconda3+pyhton3.6+cv2+pycharm数据读取-图像:cv2.IMREAD_COLOR:彩色图像cv2.IMREAD_GRAYSCALE:灰度图像import cv2 #opencv读取的格式是BGR 正常为RGBimport matplotlib.pyplot as pltimport numpy as np %matplotlib inline#图像的显示,也可以创建多个窗口def cv_show(name,img):#图像显示函数 cv2.
2020-07-06 09:34:45
838
原创 集成学习Boosting思想之AdaBoost
对于 Bagging 思想集成的随机森林,是可以并行训练的,正是因为每个弱分类器之间不相互影响;而 Boosting 是通过串行训练而获得的,每个分类器要根据以前训练出的分类器的性能来进行训练。Boosting 常用模型:AdaBoostGradient Boosting(GBT/GBDT/GBRT)XGBoost二、AdaBoost1、AdaBoost 执行过程AdaBoost 是一种迭代算法,整个迭代过程直到错误率足够小或者达到一定的迭代次数为止;每轮迭代中会在修改后的训练集上产生一个新
2020-07-03 10:39:21
355
原创 Java数据结构和算法-链表、递归、高级排序
Java数据结构和算法(七)——链表前面博客我们在讲解数组中,知道数组作为数据存储结构有一定的缺陷。在无序数组中,搜索性能差,在有序数组中,插入效率又很低,而且这两种数组的删除效率都很低,并且数组在创建后,其大小是固定了,设置的过大会造成内存的浪费,过小又不能满足数据量的存储。1、链表(Linked List)链表通常由一连串节点组成,每个节点包含任意的实例数据(data fields)和一或两个用来指向上一个/或下一个节点的位置的链接(“links”) 链表(Linked list)是一种常见的
2020-07-03 09:11:27
265
原创 Java数据结构和算法-数组、冒泡、选择、插入排序算法、栈、队列、堆
Java数据结构和算法算法的五个特征 ①、有穷性 ②、确定性 ③、可行性 ④、有输入 ⑤、有输出算法的设计原则 ①、正确性 ②、可读性 ③、健壮性 ④、高效率与低存储量需求Java数据结构和算法(二)——数组第一种方式:数据类型 [] 数组名称 = new 数据类型[数组长度];第二种方式:数据类型 [] 数组名称 = {数组元素1,数组元素2,…}3、分析数组的局限性 通过上面的代码,我们发现数组是能完成一个数据结构所有的功能的,而且实现起来也不难,那数据既然能完成所有的工
2020-07-03 09:01:58
228
转载 C总结提高篇数据类型(大小,别名,封装)、变量、程序的内存四区模型01
C总结提高篇数据类型(大小,别名,封装)、变量、程序的内存四区模型1数据类型本质分析(1)数据类型概念“类型”是对数据的抽象类型相同的数据有相同的表示形式、存储格式以及相关的操作程序中使用的所有数据都必定属于某一种数据类型(2)求数据类型大小我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:全新的界面设计 ,将会带来全新的写作体验;在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示
2020-07-02 09:39:48
134
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人