0.Opencv图像金字塔以及模板匹配(亲测—最详细)
00.python图像金字塔模板匹配,带nms
000.cv2.matchTemplate模板匹配和cv2.minMaxLoc()函数
1.opencv+python实现图像匹配----模板匹配、特征点匹配
参考:1
2.OpenCV - 模板匹配(Python实现)
3.Opencv——RGB图像的通道拆分(cv2.split)与合并(cv2.merge)
4.OpenCV approxPolyDP()函数详解
5.基于金字塔的模板匹配算法(python)
11.OpenCV_金字塔模板匹配 (C++)
9.图像金字塔与轮廓检测,模板匹配(python实现)
6.opencv cv2.imread()
imread函数有两个参数,第一个参数是图片路径,第二个参数表示读取图片的形式,有三种:
cv2.IMREAD_COLOR:加载彩色图片,这个是默认参数,可以直接写1。
cv2.IMREAD_GRAYSCALE:以灰度模式加载图片,可以直接写0。
cv2.IMREAD_UNCHANGED:包括alpha,可以直接写-1
cv2.imread()读取图片后已多维数组的形式保存图片信息,前两维表示图片的像素坐标,最后一维表示图片的通道索引,具体图像的通道数由图片的格式来决定
7.zip
a = [1,2,3]
b = [4,5,6]
c = [4,5,6,7,8]
zipped = zip(a,b) # 打包为元组的列表
[(1, 4), (2, 5), (3, 6)]
zip(a,c) # 元素个数与最短的列表一致
[(1, 4), (2, 5), (3, 6)]
zip(*zipped) # 与 zip 相反,*zipped 可理解为解压,返回二维矩阵式
[(1, 2, 3), (4, 5, 6)]
8.time sleep()
Python time sleep() 函数推迟调用线程的运行,可通过参数secs指秒数,表示进程挂起的时间。
#!/usr/bin/python
import time
print “Start : %s” % time.ctime()
time.sleep( 5 )
print “End : %s” % time.ctime()
以上实例输出结果为:
Start : Tue Feb 17 10:19:18 2013
End : Tue Feb 17 10:19:23 2013
10.argsort()函数
是将x中的元素从小到大排列,提取其对应的index(索引),然后输出到y
12.pyrDown()与pyrUp()函数
函数原型:
void pyrDown(InputArray src, OutputArray dst, const Size& dstsize=Size());
函数作用:
先对图像进行高斯平滑,然后再进行降采样(将图像尺寸行和列方向缩减一半);
函数原型:
void pyrUp(InputArray src, OutputArray dst, const Size& dstsize=Size());
函数作用:
先对图像进行升采样(将图像尺寸行和列方向增大一倍),然后再进行高斯平滑;
参考:12
13.np.where(condition)
只有条件 (condition),没有x和y,则输出满足条件 (即非0) 元素的坐标 (等价于numpy.nonzero)。这里的坐标以tuple的形式给出,通常原数组有多少维,输出的tuple中就包含几个数组,分别对应符合条件元素的各维坐标。
a = np.array([2,4,6,8,10])
np.where(a > 5) # 返回索引
(array([2, 3, 4]),)
a[np.where(a > 5)] # 等价于 a[a>5]
array([ 6, 8, 10])
np.where([[0, 1], [1, 0]])
(array([0, 1]), array([1, 0]))
参考:13
13.NMS的python实现(通俗易懂NMS)
参考:13
14.np.vstack()&np.hstack()
np.vstack:按垂直方向(行顺序)堆叠数组构成一个新的数组
In[3]:
import numpy as np
In[4]:
a = np.array([[1,2,3]])
a.shape
Out[4]:
(1, 3)
In [5]:
b = np.array([[4,5,6]])
b.shape
Out[5]:
(1, 3)
In [6]:
c = np.vstack((a,b)) # 将两个(1,3)形状的数组按垂直方向叠加
print©
c.shape # 输出形状为(2,3)
[[1 2 3]
[4 5 6]]
Out[6]:
(2, 3)
In [7]:
a = np.array([[1],[2],[3]])
a.shape
Out[7]:
(3, 1)
In [9]:
b = np.array([[4],[5],[6]])
b.shape
Out[9]:
(3, 1)
In [10]:
c = np.vstack((a,b)) # 将两个(3,1)形状的数组按垂直方向叠加
print©
c.shape # 输出形状为(6,1)
[[1]
[2]
[3]
[4]
[5]
[6]]
Out[10]:
(6, 1)
np.hstack:按水平方向(列顺序)堆叠数组构成一个新的数组
In[11]:
a = np.array([[1,2,3]])
a.shape
Out[11]:
(1, 3)
In [12]:
b = np.array([[4,5,6]])
b.shape
Out[12]:
(1, 3)
In [16]:
c = np.hstack((a,b)) # 将两个(1,3)形状的数组按水平方向叠加
print©
c.shape # 输出形状为(1,6)
[[1 2 3 4 5 6]]
Out[16]:
(1, 6)
In [17]:
a = np.array([[1],[2],[3]])
a.shape
Out[17]:
(3, 1)
In [18]:
b = np.array([[4],[5],[6]])
b.shape
Out[18]:
(3, 1)
In [19]:
c = np.hstack((a,b)) 将两个(3,1)形状的数组按水平方向叠加
print©
c.shape # 输出形状为(3,2)
[[1 4]
[2 5]
[3 6]]
Out[19]:
(3, 2)
参考:14