在Python中使用openCV对矩阵执行blob检测
我在一个叫做像素的16x8热图矩阵中捕获了一些数据。 我想在这个矩阵数据上做一些斑点识别,并在屏幕上显示结果 通过将数据显示为图像并将其保存到RAM磁盘,然后执行blob识别,我能够以一种非常复杂的方式实现这一点:在Python中使用openCV对矩阵执行blob检测,python,opencv,matplotlib,blob,Python,Opencv,Matplotlib,Blob,我在一个叫做像素的16x8热图矩阵中捕获了一些数据。 我想在这个矩阵数据上做一些斑点识别,并在屏幕上显示结果 通过将数据显示为图像并将其保存到RAM磁盘,然后执行blob识别,我能够以一种非常复杂的方式实现这一点: 将数据显示为图像 绘制当前图形 将映像保存到RAM磁盘 检测斑点 显示图像 它很慢。是否有更简单/更短的方法来检测矩阵中的斑点?或者至少跳过ramdisk保存?谢谢大家! 守则: # Display data as an image. maybe not necessary? r
- 将数据显示为图像
- 绘制当前图形
- 将映像保存到RAM磁盘
- 检测斑点
- 显示图像
# 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
....