Ale*_*ich 2 python opencv k-means
我对 cv2 有点陌生,但出现以下错误
首先,我使用以下代码获取图像的 ORB 描述符:
import cv2
img = cv2.imread('messi.jpg',0)
orb = cv2.ORB_create()
cv2.ocl.setUseOpenCL(False)
kp, des = orb.detectAndCompute(img, None)
Run Code Online (Sandbox Code Playgroud)
该函数检测到 500 个关键点,每个关键点的维度为 32。如果我这样做:
des.shape
Run Code Online (Sandbox Code Playgroud)
我得到:
(500L,32L)
Run Code Online (Sandbox Code Playgroud)
此外,我想使用 kmeans 获取描述符的质心。这是我的代码:
iterations = 10
epsilon = 1.0
k = 64
criteria = (cv2.TERM_CRITERIA_EPS + cv2.TERM_CRITERIA_MAX_ITER, iterations, epsilon)
compactness, labels, centers = cv2.kmeans(des, k ,None ,criteria, iterations, cv2.KMEANS_RANDOM_CENTERS)
Run Code Online (Sandbox Code Playgroud)
我得到的错误是:
error: C:\builds\master_PackSlaveAddon-win64-vc12
static\opencv\modules\core\src\kmeans.cpp:230: error: (-215) data0.dims <= 2
&& type == CV_32F && K > 0 in function cv::kmeans
Run Code Online (Sandbox Code Playgroud)
我已经看到有关 C++ 的此错误的线程,这通常是图像维度或图像类型的问题,但在 python 中我不确定这意味着什么。
有什么帮助吗?
报错原因是cv2.kmeans函数的第一个参数必须是数据类型为32的数组
因此,引入下面这行代码就解决了问题:
des = np.float32(des)
Run Code Online (Sandbox Code Playgroud)
此处提供了许多有关如何使用该功能的示例:
归档时间: |
|
查看次数: |
3510 次 |
最近记录: |