- 博客(34)
- 收藏
- 关注
原创 C++指针与const
const指针1常量指针指向变量double val = 3;double *const p1 = &val;一般用上面这种,下面这种也不报错double val = 3;const double *const p1 = &val;2常量指针指向常量const double val = 3;const double *const p1 = &val;在定义指针常量时,如果初始化的对象也是常量,则double前面必需再加一个const,表示指针指向的也是常量,
2020-08-03 16:53:17
225
原创 C/C++指针的写法和理解
指针两种写法1定义指针时赋值int val = 1;int *p2 = &val;2先定义空指针,后赋值int val = 1;int *p1=0;p1 = &val;我的理解是,*是解引用符,*p2对应的是相应地址内的内容,但在第一种写法int *p2 = &val除外,这里是为了声明p2是指针变量第二种写法需要注意的地方如果用第二种写法定义了空指针,运行如下代码会发生错误。int val = 1;int *p1=0;*p1 = val;我的理解是
2020-08-03 16:06:11
2218
原创 12 图像拼接
在进行图像拼接前先了解几个算法和概念1.Brute-Force蛮力匹配直接用两张图的特征进行匹配,有一对一和k对最佳匹配两种方法1.一对一匹配sift = cv2.xfeatures2d.SIFT_create() #注意3.4.15版本以后已经不能用了,可以改用ORB算法kp1, des1 = sift.detectAndCompute(img1, None) #用sift方法提取出两张图的特征点kp2, des2 = sift.detectAndCompute(img2, None)bf
2020-05-15 17:07:49
468
原创 11 获取图像特征点 sift
原理:1.图像尺度空间一个物体不论是近处人们可以分辨出来,远处也可通过轮廓进行分辨,图像尺度空间就是通过制造模糊程度不同的图像,即不同的尺度,让计算机对不同尺度下的物体有一个统一的认知不同尺度的效果如下:不同σ的高斯函数决定了对图像的平滑程度,越大的σ值对应的图像越模糊。2.多分辨率金字塔由于要在远处,即物体比较小的时候也能分辨出来,只做一个同样大小的尺度远远不够,因此还要做一个多分辨率金字塔。图像的不同尺度是为了在相同的大小下让计算机能够识别出来物体,多分辨率金字塔是为了让计算机能在远近
2020-05-14 10:58:00
385
原创 10 harris 角点检测
1.harris 角点检测原理R的取值为多少的时候认为是角点,还要自行设定阈值通过额外的代码来进行判断,在后面的代码有显示。有时候在角点周围的一小片区域算出来的R值可能都比较大,这时候最后还要进行非极大值抑制2.opencv函数调用求出每个点的角分数ksize一般取(3,3)k的取值对应的前面角点相应R值里面的aimport cv2 import numpy as npimg = cv2.imread('test_1.jpg')print ('img.shape:',i
2020-05-13 12:25:26
145
原创 08 傅里叶变化
1.傅里叶变换对图片进行频域上的处理opencv中主要就是cv2.dft()和cv2.idft(),输入图像需要先转换成np.float32 格式。得到的结果中频率为0的部分会在左上角,通常要转换到中心位置,可以通过shift变换来实现。cv2.dft()返回的结果是双通道的(实部,虚部),通常还需要转换成图像格式才能展示(0,255)。import numpy as npimpor...
2020-05-07 22:52:34
241
原创 08 图像直方图
1.图像直方图统计一张图片每个像素或不同范围内的像素点个数可以用与比较两张图是否一样,相似度问题cv.calcHist(images, channels, mask, histSize, ranges)images:图像格式应为uint8或float32,传入时以[image]格式channels:以[]表示统计的通道,灰度图就是[0],彩色图可以是[0][1][2],一次只能一个通道...
2020-05-07 22:25:21
175
原创 07 轮廓绘制的一些应用
1.绘制外接矩形cv.boundingRect(cnt)输入一个轮廓信息,会返回一个x,y坐标和矩形的宽和高cv.rectangle(img,(x,y),(x+w,y+h),(0,255,0),2)输入起点的(x,y)坐标,以右下角为起点,利用给定的宽高来绘制出一个矩形img = cv2.imread('contours.png')gray = cv2.cvtColor(img, cv...
2020-04-18 00:21:50
167
原创 07 轮廓检测
1.轮廓提取函数:cv.findContours(img,mode,method)1.mode:轮廓检索模式RETR_EXTERNAL :只检索最外面的轮廓;RETR_LIST:检索所有的轮廓,并将其保存到一条链表当中;RETR_CCOMP:检索所有的轮廓,并将他们组织为两层:顶层是各部分的外部边界,第二层是空洞的边界;RETR_TREE:检索所有的轮廓,并重构嵌套轮廓的整个层次;一...
2020-04-17 23:47:50
280
原创 06 图像金字塔
图像金字塔有高斯金字塔和拉普拉斯金字塔,简单来说就是图像进行缩放。高斯金字塔有下采样和上采样。下采样是从最大的那层即最底层不断以1/2的形式缩小,可以把金字塔看成是倒立的。上采样反之。同时,要想进行金字塔操作,图像的大小必须是2的倍数,金子塔的层数直接由图像的大小是2的多少倍决定1.高斯金字塔高斯金字塔有上采样和下采样:下采样: PyrUp(image)1.先经过高斯卷积核进行平...
2020-04-17 22:48:04
180
原创 cmd进行MySQL无法连接 问题解决
问题:解决方法:输入 mysql -h localhost -P 1003(这是端口号)-u root -p成功
2020-04-17 17:51:49
847
原创 05 Canny边缘检测
Canny算子Canny算子对边缘处理的会比Sobel等算子更加细致,他的边缘细致到单个像素的层面为什么通过比较梯度的大小就可以判断边缘:梯度往往会比周围的点更加明亮,所以在求导后即梯度较其他点大。流程:转灰度图 —> 平滑处理(高斯滤波) —> 计算每点的梯度和梯度方向(Sobel算子等)—>非极大值抑制(筛选边缘)—>双阈值进一步筛选边缘1.非极大值抑制在用S...
2020-04-17 00:19:40
198
原创 04 图像梯度处理 Scharr算子和Laplacian算子
可见Scharr算子和Sobel原理类似,只是他将差异进一步放大,对差异更加敏感Laplacian算子对变化更敏感,同时对噪音也会敏感,所以单独使用效果并不好,一般和其他处理配合下面看几种算子的效果对比img = cv2.imread('lena.jpg',cv2.IMREAD_GRAYSCALE)sobelx = cv2.Sobel(img,cv2.CV_64F,1,0,ksize=3...
2020-04-15 22:47:09
228
原创 04 图像梯度处理 Sobel算子
Sobel算子先来看看sobel算子矩阵的构造,称作卷积核更合适,这就是卷积运算以3*3卷积核为例可以看出Gx卷积核会增强垂直方向两边的差异,而Gy卷积核会增强水平方向上下的差异。同时可以看到,离中间越近代表的权重越大,同时差异会更加明显,类似高斯分布函数:dst = cv2.Sobel(src, ddepth, dx, dy, ksize)ddepth:图像的深度dx和dy分别表...
2020-04-15 22:28:04
1777
原创 03 图像形态学处理 (腐蚀、膨胀操作、开闭运算、梯度运算、礼帽黑帽)
1.腐蚀操作'''腐蚀原理:在一个卷积核内,如果存在不同的像素值,则某些像素会被另一部分腐蚀掉,即将其值修改为其他的像素值当然,如果卷积核内像素值都一样则不会发生腐蚀,所以边界处腐蚀效果会更明显'''kernel = np.ones((3,3),np.uint8) #设置卷积核大小erosion = cv2.erode(img,kernel,iterations = 1) #腐蚀操作...
2020-04-15 21:43:00
1082
原创 02 图像处理(阈值分割、平滑处理)
1.图像阈值ret, dst = cv2.threshold(src, thresh, maxval, type)src: 输入图,只能输入单通道图像,通常来说为灰度图dst: 输出图thresh: 阈值maxval: 当像素值超过了阈值(或者小于阈值,根据type来决定),所赋予的值type:二值化操作的类型,包含以下5种类型: cv2.THRESH_BINARY; cv2.THR...
2020-04-14 18:24:28
930
原创 01基本操作(边界填充,图片融合)
1.图片读取cv.imread(‘path’, cv.IMREAD_GRAYSCALE / cv.IMREAD_COLOR)cv.cvtColor(image, cv.COLOR_BGR2GRAY) 彩色空间转换,第二个参数选择很多cv.waitKey()cv.imshow(‘name’, image)cv.destoryAllWindows()2.视频读取vc = cv.Vide...
2020-04-14 17:44:31
624
原创 《SQL基础教程》笔记 CASE
CASE相当于IF语句假设有这样一张表现在我想根据第一张图的要求得到第二张图的结果用CASE实现如下:这里注意,ELSE不是必要的,但是建议每次都写上同时CASE的位置也是不固定的,比如我想把转换成用CASE实现如下...
2020-04-11 11:18:46
153
原创 《SQL基础教程》笔记 谓词
LIKE 模糊查询WHERE (列名) LIKE 'DDD%' #取出开头是DDD的字符串所在行WHERE (列名) LIKE '%DDD' #取出结尾是DDD的字符串所在行WHERE (列名) LIKE '%DDD%' #取出含有DDD的字符换所在行WHERE (列名) LIKE 'DDD_' #1个下划线,以DDD开头且DDD后只有1个字符 一个下划线代表一个字符BETWE...
2020-04-11 11:00:30
294
原创 《SQL教程》笔记 视图
1.什么是视图在SQL来看,视图就是一张表视图和表的区别在于 视图存放的是SELECT语句,没有存放实际数据;而表中存放着实际数据创建视图的语句:CREATE VIEW (视图名称) (列1,列2,...)AS(SELECT 语句)举例:CREATE VIEW new_product (product_profit, product_date)ASSELECT purchas...
2020-04-09 11:05:55
215
原创 《SQL教程》笔记 基本操作
1.表删除和清空表DROP (表名) 直接删除整个表DELETE (表名) 删除表的内容例 :只删除了id=0001的行DELETE product WHERE product_id = '0001'2.表更新UPDATE 更新某列不加where则更新一整列,如下UPDATE (表名)SET (列名) = (修改值)加where则可指定更新某一个数据UPDATE (表...
2020-04-09 10:36:19
111
原创 OpenCV 泛洪填充 floodFill()详解
在学OpenCV的时候遇到个函数floodFill()函数有点不解,特地在这里记录一下。先说说它的参数floorFill(image, mask , seedPoint, newVal, loDiff, upDiff, flags)参数说明image处理对象mask掩膜(后面会说明)seedPoint填充的起点newVal填充的颜色loDi...
2020-03-05 21:12:56
8851
4
原创 pandas 筛选含有特定元素的行或列 str.contains()函数
在处理数据的时候遇到需要查找含有某特定字符串的问题,顺便记录一下我们先用str将所需要筛选的列转换成字符形式,然后通过contains()函数来筛选下面看一个例子创建一个DataFramedf = pd.DataFrame({'A':['aasd','sb','adg','sfh','rh'],'B':np.arange(5)})print(df)out: A B0 ...
2020-02-22 16:07:54
8158
原创 pandas DataFrame遍历 iterrows / iteryuples / apply
.iterrows()首先注意,iterrows()只能用于DataFrame对pandas每行进行遍历,返回索引和对应的行df= pd.DataFrame({'a': ['a','b','a','a','b','c','b'], 'b': range(7),'c':[1,1,1,1,2,2,1]})df = df.groupby(['a','c']).mean()print(df)p...
2020-02-21 18:33:56
977
转载 Python读取文件错误问题 字符编码(转载)
https://blog.youkuaiyun.com/qq_18888869/article/details/82625343?utm_source=distribute.pc_relevant.none-task
2020-02-19 20:04:32
162
原创 Python collections模块 用defaultdict / setdefault 函数 和counter类型 统计元素出现的次数
现在我们假如有一个列表,需要统计其中每种元素的个数,我们可以这样写lis1 = ['a','b','c','a','c','a','a','b','c']result = {}for i in lis1: if i in result: result[i] += 1 else: result[i] = 1print(result)out:...
2020-02-18 21:01:40
152
原创 pandas iloc和loc的区别
简单来说,iloc()和loc()区别就在于前者是通过索引名来索引,后者通过索引值索引同时要注意,当一个DataFrame的索引是默认状态时,二者没有什么区别,因为索引值和索引名都是一样的来看下面几个例子先看看iloc()的df = pd.DataFrame(np.arange(0,45,3).reshape(5,3), index = ['a','b',...
2020-02-17 14:36:50
227
原创 pandas unstack()和stack()函数
.unstack()和.stack()首先创建一个多级的DataFramedata = pd.DataFrame(np.arange(6).reshape((2, 3)), index=pd.Index(['Ohio','Colorado'], name='state'), columns=pd.Index([...
2020-02-15 22:09:33
1095
原创 pandas combine_first()函数
.combine_first()以例子说明df1 = pd.DataFrame([np.nan, 1, 2, np.nan,3])df2 = pd.DataFrame([1, 2, 3, np.nan, np.nan])print(df1)print('————')print(df2)print('————')print(df1.combine_first(df2)) #用d...
2020-02-15 20:35:44
1091
原创 numpy中axis参数理解
对axis的理解在我理解看来,numpy中参数axis代表的就是维度。即通过.shape函数输出的元素有几个,axis 最大 就是几,即这个数组最大的维度。同时注意,在numpy中 rank 代表的是数组的维度而不是秩,区别于线代的rank在numpy中,rank和axis的最大值是一个意思import numpy as npimport pandas as pdrng = np.ra...
2020-02-14 16:10:44
857
原创 Python 文件读取
**1.open()和close()**在读取文件内容前需先打开文件,并且在结束后关闭文件代码:f = open('hallo.txt','r')print(f)f.close()print(f.read()) #read()函数将返回文件内容输出:<_io.TextIOWrapper name='hallo.txt' mode='r' encoding='cp936...
2020-02-12 17:57:10
232
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人