擅长:python、mysql、java
<p>问题是不能将cv2.KeyPoint转储到pickle文件。我也遇到了同样的问题,在用Pickle处理关键点之前,我自己通过序列化和反序列化来解决这个问题。</p>
<p>所以用元组表示每个关键点及其描述符:</p>
<pre><code>temp = (point.pt, point.size, point.angle, point.response, point.octave,
point.class_id, desc)
</code></pre>
<p>将所有这些点附加到一些列表中,然后用Pickle转储这些列表。</p>
<p>然后,如果要再次检索数据,请使用Pickle加载所有数据:</p>
<pre><code>temp_feature = cv2.KeyPoint(x=point[0][0],y=point[0][1],_size=point[1], _angle=point[2],
_response=point[3], _octave=point[4], _class_id=point[5])
temp_descriptor = point[6]
</code></pre>
<p>使用上面的代码从这些数据创建一个cv2.KeyPoint,然后您可以使用这些点构建一个特性列表。</p>
<p>我想有一个更整洁的方法来做这件事,但上面的工作很好(和快速)为我。由于我的功能存储在特定于格式的列表中,因此您可能需要稍微修改一下数据格式。我试图用我的想法在它的一般基础上提出上述观点。我希望这对你有帮助。</p>