python - 灰度框架上的 numpy.where(),索引错误?

标签 python opencv numpy matplotlib ransac

我正在尝试实现一个基本的 RANSAC 算法来检测灰度图像中的圆圈。

问题是,在我对图像进行阈值处理并搜索非零像素后,我得到了正确的形状,但这些点以某种方式偏离了原始位置:

video = cv2.VideoCapture('../video/01_CMP.avi')
video.set(cv2.CAP_PROP_POS_FRAMES,200)
succ, frame = video.read()

frame = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
frame = cv2.normalize(frame,frame, alpha=0,norm_type=cv2.NORM_MINMAX, beta = 255)
ret,frame = cv2.threshold(frame,35,255,cv2.THRESH_BINARY)

points = n.where(frame>0) #Thresholded pixels

#Orienting correctly the points in a (n,2) shape
#needed because of arguments of circle.points_distance()
points = n.transpose(n.vstack([points[0],points[1]]))

plt.imshow(frame,cmap='gray');
plt.plot(points[:,0],points[:,1],'wo')

video.release()

Non-zero pixels, wrong position

我在这里错过了什么?

最佳答案

OpenCV 使用NumPy ndarray 表示图像,数组的轴0 是垂直的,对应图像的Y 轴。

因此,绘制您需要的点:plt.plot(points[:,1],points[:,0],'wo')

关于python - 灰度框架上的 numpy.where(),索引错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30681997/

相关文章:

Python OpenCV 2.4 写入半完整的PNG视频帧

python - 如何从 3d numpy 数组中提取向量?

Python - 通过 urllib2 session 登录时发布 Facebook 状态

image-processing - OPenCV 提升差异

python - 如何在 scikit-learn 中获取 LDA 的组件?

image - 获取坐标以从 OpenCV 输出图像生成边界框

python - 使用合适的填充将整数转换为二进制数组

python - 在 for 循环中引用数组

php - Ruby 或 Python 而不是 PHP?

python - 如何获取选定的qTableView行值(所有列)