在Python中使用OpenCV在矩阵上执行Blob检测

时间:2020-06-11 20:11:57

标签: python opencv matplotlib blob

我已经在称为像素的16x8热图矩阵中捕获了一些数据。 我想对该矩阵数据进行一些斑点识别,并将结果显示在屏幕上。

通过将数据显示为图像并将其保存到RAM磁盘,然后执行斑点识别,我能够以非常复杂的方式完成此操作:

  • 将数据显示为图像
  • 获取当前图形
  • 将图像保存到RAM磁盘
  • 检测斑点
  • 显示图像

太慢了。有没有更简便的方法来检测矩阵中的斑点?或者至少跳过ramdisk保存?谢谢!

代码:

# Display data as an image. maybe not necessary?
rez = plt.imshow(np.reshape(np.repeat(0,128),(16,8)),cmap=plt.cm.hot,interpolation='hanning')
plt.draw()
plt.pause(0.0005)

# read data
pixels = s.readData()
# update data
rez.set_data(np.reshape(pixels,(16,8)))

# get the current figure drawn
fig1 = plt.gcf()
# save to RAM disk
fig1.savefig('/home/pi/ramdisk/img.png', dpi=300) 
# Read image
im0 = cv2.imread("/home/pi/ramdisk/img.png", cv2.IMREAD_COLOR)
im1 = cv2.imread("/home/pi/ramdisk/img.png", cv2.IMREAD_GRAYSCALE)

im = cv2.threshold(im1, 158, 255, cv2.THRESH_BINARY_INV)[1]
params = cv2.SimpleBlobDetector_Params()
params.minArea =50
detector = cv2.SimpleBlobDetector_create(params)
# Detect blobs.
keypoints = detector.detect(im)
# Draw detected blobs
im_with_keypoints = cv2.drawKeypoints(im0, keypoints, np.array([]), (0,255,0), cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS)
#display image with blobs
....

0 个答案:

没有答案
相关问题