Python 用于计算机视觉的ORB数据:一行中的项目是什么?
我正在看2018年中世纪的记忆性挑战() 他们描述的特征之一是ORB特征。我从挑战赛中获得了数据,我试图了解ORB数据是如何工作的 如果我运行此代码:Python 用于计算机视觉的ORB数据:一行中的项目是什么?,python,computer-vision,cv2,orb,Python,Computer Vision,Cv2,Orb,我正在看2018年中世纪的记忆性挑战() 他们描述的特征之一是ORB特征。我从挑战赛中获得了数据,我试图了解ORB数据是如何工作的 如果我运行此代码: with open('/Memorability_data/ORB/video10-0.p', 'rb') as f: ##change the file name; just an example data = pickle.load(f) print(len(data)) print(data[0]) print(len(da
with open('/Memorability_data/ORB/video10-0.p', 'rb') as f: ##change the file name; just an example
data = pickle.load(f)
print(len(data))
print(data[0])
print(len(data[0]))
print('*')
for i in data[0]:
print(i)
输出为:
500
((1143.0, 372.0), 31.0, 169.99649047851562, 0.001837713411077857, 0, -1, array([228, 118, 156, 58, 232, 237, 21, 206, 219, 127, 33, 56, 134,
216, 79, 27, 129, 17, 234, 19, 39, 103, 202, 112, 20, 18,
85, 127, 216, 89, 203, 7], dtype=uint8))
7
*
(1143.0, 372.0)
31.0
169.99649047851562
0.001837713411077857
0
-1
[228 118 156 58 232 237 21 206 219 127 33 56 134 216 79 27 129 17
234 19 39 103 202 112 20 18 85 127 216 89 203 7]
所以我知道每个视频都有一个文件,每个文件有500行长,每行看起来与上面的类似。我在试着理解这些行是什么意思
我发现,他们描述:
static Ptr<ORB> cv::ORB::create ( int nfeatures = 500,
float scaleFactor = 1.2f,
int nlevels = 8,
int edgeThreshold = 31,
int firstLevel = 0,
int WTA_K = 2,
int scoreType = ORB::HARRIS_SCORE,
int patchSize = 31,
int fastThreshold = 20
)
static Ptr cv::ORB::create(int-nfeatures=500,
浮点比例因子=1.2f,
int nlevels=8,
int edgeThreshold=31,
int firstLevel=0,
int WTA_K=2,
int scoreType=ORB::HARRIS_分数,
int patchSize=31,
int fastThreshold=20
)
我不明白我文件中的数据是什么。它显然与我找到的示例不匹配(例如,上面说行中的最后一项应该是int(fastThreshold=20),而我行中的最后一项是列表)
有人能解释一下我的列表中的项目是什么,或者提供一个参考资料吗?(或者我收到的数据是否以某种方式进行了预处理,有人能告诉我吗)?我的最终目标是将这些数据转换成CSV文件,但我不知道标题应该是什么
我发现了类似的SO问题(例如和),我看了其中一个答案中的论文,但我仍然不清楚。我无法确定每个字段的含义,但我想我可以猜到一些:
- 第一个元组是特征的x,y位置(最可能的像素坐标)
- 31是特征的大小,由面片大小给出
- 169应为特征的方向,以度为单位
- 最后的列表给出了该功能的描述。这是由简短描述符生成的。它是32个8位值的列表。如果为这些数字中的每一个生成位模式,则最终将得到256个1或0。这是用于匹配的二进制特征描述
数据[0]
变量的7项功能按如下顺序列出: