- 博客(80)
- 收藏
- 关注
原创 图像配准算法中的适应度函数设置
大概有两种方法,一种是基于灰度匹配的用两幅图像的互信息、均方差做适应度函数,第二种是,用优化算法求出单应性矩阵后,然后用两幅图像特征点的匹配个数做适应度函数
2022-05-09 11:28:04
535
原创 surf特征提取 msac算法进行特征点匹配
% clear,clc,close all% img=imread('cqu2.jpg');% imshow(img)% img_gray=rgb2gray(img);% figure,imshow(img_gray)% pts=detectORBFeatures(img_gray);% figure,% imshow(img_gray)% hold on% plot(pts,'showscale',false)clc;clear;close all;% load colorI
2022-03-23 12:31:28
446
转载 ransac和msac算法的区别
RANSAC的cost算法伪代码:count = number of Data Points //粗糙匹配对的组数cost = 0For (n=0; n<count; n++){ cost += Error[n] <= Tolerance?0:1;}MSAC的cost算法伪代码:count = number of Data Points //粗糙匹配对的组数cost = 0For (n=0; n<count; n++){ cost += Error[n] <=
2022-03-23 11:36:43
1287
原创 python读取摄像头的视频并播放
import numpy as npimport cv2#read cameracap = cv2.VideoCapture(0) while(True): # Capture frame-by-frame ret, frame = cap.read() # Our operations on the frame come here gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) # Display t
2022-03-22 12:26:13
5547
原创 pyqt中将lineEdit的值置为特定的值
注意:setText()中的值必须为字符型,如果是数字,则要用方法str()将数字装换成字符型,如果为数字的话程序会报错 def showprint(self): s = self.lineEdit.text() #获取lineedit中的值 print(type(s)) # s=int(s) # print(s) self.lineEdit_2.setText(s) #setText中的值必须为“str”
2022-03-21 14:52:46
2112
原创 pyqt中获取lineEdit文本框中输入的值
pyqt中获取lineEdit文本框中输入的值 def showprint(self): s = self.lineEdit.text() #获取lineedit中的值 print(type(s))
2022-03-21 14:23:46
11201
1
原创 将pyqt5生成的.ui文件转换成.py代码后需要添加的代码
将pyqt5生成的.ui文件转换成.py代码后需要添加的代码if __name__=='__main__': import sys app=QtWidgets.QApplication(sys.argv) MainWindow=QtWidgets.QMainWindow() #创建窗体对象 ui=Ui_Form() #创建pyqt设计的窗体对象 ui.setupUi(MainWindow) #
2022-03-21 13:13:54
968
原创 opencv 中imshow不能显示数据类型为int32的数组?
python中opencv中的imshow函数好像不能显示int32的数组?可以用以下代码来证明,以后用imshow显示图像要注意数组中元素的数据类型import cv2img=cv2.imread('1.1.jpg',0)#从图片中读取的数组的数据类型为uint8,可以用imshow正常显示print(img.dtype)#用np.array()将uint8转换为int32之后,imshow就不能显示此图像img_int32=np.array(img,dtype=np.int32)prin
2022-03-16 11:03:18
5061
原创 opendcv中waitKey()的一个用法(图像循环显示)
实现的功能是循环显示不同阈值下生成的二值图像,范围为[0.255],代码如下:import cv2a=cv2.imread('4.27.png',0)while cv2.waitKey(1)==-1: for i in range(0,255): thresh,b=cv2.threshold(a,i,255,cv2.THRESH_BINARY) cv2.imshow('a',b) cv2.waitKey(1)cv2.destroyAllWin
2022-03-15 14:59:08
316
原创 opencv中没有按下按键就不断循环
代码如下:while cv2.waitkey(1)==-1 #循环的内容cv2.destroyAllWindows()
2022-03-15 12:23:03
2823
原创 numpy中shape的一个容易混淆的地方
shape是在numpy中特有的,以下这种情况要注意import numpy as npa=np.array([1,2])print(a.shape)显示结果为:import numpy as npa=np.array([[1],[2]])print(a.shape)其输出结果为:
2022-03-14 15:57:20
2343
原创 python随机生成彩色图像
利用numpy.random.randint生成随机三维数组,代码如下import numpy as npimport cv2a=np.random.randint(0,256,[768,1366,3],np.uint8)cv2.imshow('a',a)cv2.waitKey()cv2.destroyAllWindows()
2022-03-14 10:49:00
2666
原创 python numpy.reshape的一个特性
将一个数组进行重排的时候,可以用只设置一个轴的尺寸,另一个轴可以负数代替,比如说-1import numpy as npa=np.arange(20).reshape(4,-1)
2022-03-12 21:04:06
765
原创 python强制打印整个数组
注意要导入sys模块import sysnp.set_printoptions(threshold=sys.maxsize)
2022-03-11 11:14:03
1464
原创 python 导入模块
在python导入模块的过程中,拿numpy模块中的pi举例,注意下面的区别import numpyprint(numpy.pi)##############from numpy import piprint(pi)
2022-03-11 10:38:09
383
转载 python numpy判断两个数组相等
地址:https://www.cnblogs.com/Yanjy-OnlyOne/p/13366342.html
2022-03-09 16:25:04
2584
原创 matlab层次聚类相关解释
包括linkage和cluster链接:https://my.oschina.net/u/4304788/blog/3903952
2022-03-07 11:20:54
248
原创 python读取图片并显示
利用opencv模块读取并显示图像import cv2a=cv2.imread('1.1.jpg')cv2.imshow('flower',a)cv2.waitKey()cv2.destroyAllWindows()
2022-03-07 10:52:44
1307
转载 层次聚类的评价
层次聚类的评价—共性分类相关系数(cophenetic correlation coeffieient,CPCC)一个聚类树的共性分类相关性是指由聚类树得到的共性分类距离与构造树时的原始距离(相异性)之间的线性相关系数,因此它是对聚类树在多大程度上代表了样本之间相异性的度量。MATLAB中,用cohenetic计算该相关系数,输入参数为pdist函数输出的样本对距离向量Y和由linkage函数输出的层次聚类树Z,相关系数越接近于1,说明聚类效果越好。该系数的计算公式为:其中,是Y中样本i和j之间的距
2022-03-05 03:16:06
2692
原创 matlab中k-means算法的实现
载入标准fisher数据集,然后用k均值聚类算法将数据集分成3簇,关键点是利用索引idx查找矩阵x中对应的值,以及plot各项属性的使用clear,clcload fisheririsx=meas(:,[1:3]);[idx,cen]=kmeans(x,3);% silhouette(x,idx)color=['r','g','b'];for i=1:3% kk=x(find(idx==i));plot3(x(idx==i,1),x(idx==i,2),x(idx==i,3),'
2022-03-04 11:07:59
2131
原创 matlab中利用索引找出矩阵想要的值
代码示例如下:idx为索引矩阵,含有1,2,3for i=1:3plot(x(idxi,1),x(idxi,2),x(idx==i,3),)end
2022-03-04 10:53:25
1987
原创 matlab guide中隐藏坐标轴
方法一:在坐标轴属性栏中将vision 关掉方法二:在xxx_OpeningFcn中输入set(handles.axes1,‘visible’,‘off’)参考链接:https://www.ilovematlab.cn/forum.php?mod=viewthread&tid=270054
2022-03-01 14:10:48
4301
原创 计算图像的质心(重心)
摘自《数字图像处理》,先将所求图像的行列索引[r.c]分别找出来,然后,利用以r和c作为输入的mean函数来计算物体的质心:rbar=mean( r );cbar=mean( c );
2022-02-25 10:34:31
3444
原创 MATLAB中应用于图像的仿射变换
仿射变换的类型如下表所示以函数checkerboard中生成的棋盘图像进行顺时针旋转30°为例注意:imtransform在默认的情况下将输出范围之外的位置全部重为0!代码如下:f=checkerboard(50);%生成棋盘图像angle=pi/6;%设置顺时针旋转角度T=[cos(angle) sin(angle) 0;-sin(angle) cos(angle) 0;0 0 1];%仿射矩阵t1=maketform('affine',T);%根据仿射矩阵创建tform结构g1=imt
2022-01-06 14:06:00
3827
原创 matlab创建匿名函数句柄
MATLAB中创建匿名函数句柄,如下在命令行窗口中输入x=@(a) a^2之后就能在工作区创建一个临时的函数类变量x,如果想使用直接输入x(3),意思是求3的平方
2022-01-06 09:43:04
519
原创 中值滤波器的matlab实现
中值滤波器能够有效降低图像中的椒盐噪声,其中在matlab中可以使用两种方式实现,操作过程如下首先载入没有噪声的待处理图像,a=imread('zl1.tif');a=tofloat(a);%注意要用tofloat将uint8类转换成浮点数,因为在滤波运算中都是以浮点数的形式运算的,如果不转换,可能会造成精度丢失原图如下用imnoise函数加入椒盐噪声b=imnoise(a,'salt $ pepper',0.25);%注意属性选项中即“salt $ pepper”中间有两个空格,0.2
2021-12-20 10:17:53
5951
原创 matlab中动态绘制曲线
此项目实现动态绘制曲线图,这只是其中的一种方法,还有很多其他的方法,代码如下clearclcx=linspace(0,10,100);y=sin(x);for i=1:numel(x)plot(x(1:i),y(1:i),'r')axis([min(x)*(11/10),max(x)*(11/10),min(y)*(11/10),max(y)*(11/10)])hold onpause(0.1)end有两个注意的点:1.matalb坐标轴刻度范围默认是自适应的,所以要根据向量的
2021-12-16 14:42:18
4495
原创 在matlab gui中播放视频的方法
这个项目仅仅作为gui播放视频的验证视频文件前处理:讲要播放的视频用视频剪辑软件调整到合适的时长,注意这个视频的时长不是在gui界面上的播放时长,因为imshow函数会有可观的运行时间,导致在gui中播放的时长要比视频实际时长要长,这个问题暂时还没有找到解决方法首先利用guide把界面画好,如下图所示:注意:要想不在gui界面中隐藏坐标轴,将坐标轴属性中的‘vision’置为‘off’,如下图,然后保存,如下图在按钮的回调函数中写入如下代码:function pushbutton1_Callb
2021-12-16 11:39:05
7286
7
原创 matlab中怎样判断两个数组是否相等
matlab中怎样判断两个数组是否相等?方法一:利用冒号和all函数,例如:all(x(:)== y(: ) )方法二:利用isequal,例如:isequal(x,y)注意:若x=y,未必能保证上式返回真值,因为若矩阵中有nan,而nan~=nan...
2021-12-13 13:54:08
10389
原创 matlab中遍历图片像素点的方法(冒号和reshape的用法)
在for循环中,一般循环条件是形如1:10,是生成的单独的行向量,然后将行向量中的每一个元素赋值给i;如果循环条件是矩阵,那么是把矩阵中的每一列赋值给i,而不是我误认为的把矩阵中的每一个元素赋值给i,要想对矩阵a中的每一个元素进行遍历,可以采用两种方法方法一:for i=(a(:))'%注意a(:)生成的是列向量,不能在循环中进行遍历,所有要加’进行转置,将列向量转换成行向量方法二:for i=reshape(a,1,[])%利用reshape函数将矩阵转换成行向量,将“列参数”设为空值
2021-12-13 11:43:01
2841
原创 matlab 复现文献中的图,用到求解未知数
帮别人做的文献中的程序,原文见[1]. 江岳文与陈晓榕, 风电波动成本分摊方法. 电力自动化设备, 2020.要求根据以下原理作图求等效出力曲线图,如下想到了两种求解思路,第一种求解思路和文献中的图有出入,编程思路是先求出l和pw的值,满足公式(1),然后讲求得的和相除得到比例因子,然后将l中所有的纵坐标除以比例因子,即得到要求得的pw1代码如下第二种思路是严格按照公式(1)和公式(2)中的原来编程,设未知数x,迭代求得pw1的和表达式,然后利用matlab来方程的解,然后将解带入到pw1
2021-11-22 17:30:07
1102
原创 基于元胞自动机的森林火灾matlab模拟
先建立一个300300的矩阵,模拟森林的各种状态,其中矩阵的每个元素有3个状态,分别是0、1、2,其中0代表此处没有树木生长,1代表此处的树木正在燃烧,2代表此处有树木。这个模型的规则是,A、如果矩阵中的一个树木上下左右有燃烧的树木,那么它会被点燃,也就是说如果一个元素的状态为 2,它的“上下左右”相邻的元素中有值为1的话,那么这个元素在下一次的循环中会变成1,;B、如果一个树木正处于燃烧中,那么它会熄灭,也就是说如果一个元素的值为1,那么它在下一次循环中会变成0;C、在没有树的土地上有几率长成
2021-10-02 21:27:23
1665
原创 神经网络中训练数据、验证数据、测试数据三者的含义
训练数据是用来训练神经网络模型的数据,验证数据的作用是在神经网络训练的过程中不断测试模型的误差,验证数据的误差随着神经网络模型训练的次数增加会呈现先减小后增加的数据,所以验证数据的误差会存在一个拐点,当达到这个拐点时停止神经网络的训练,这时得到的神经网络的误差最小。而测试数据就是用来在神经网络训练完毕的时候测试模型的误差的数据。总结至https://www.bilibili.com/video/av97628861/ 中14:30处...
2021-09-10 22:43:21
4430
原创 matlab 《华强买瓜》二值化视频案例
先将视频读入后将每帧进行图像二值化处理,然后在子文件夹下生成二值化之后的图片,代码如下v = VideoReader('f25.mp4');ii = 1;while hasFrame(v) img = readFrame(v); thresh = graythresh(img); %自动确定二值化阈值I2=im2bw(img,thresh); %图像二值化 % filename = ['./jpg/'sprintf('%03d',ii) '.jp
2021-08-13 02:48:50
1140
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人