Python计算机视觉:在阈值化图像中使用center_of_mass()函数寻找每个物体的中心坐标
《Python计算机视觉》第一章练习第七题:
使用形态学操作处理阈值化图像。在发现一些参数能够产生好的结果后,使用center_of_mass()函数寻找每个物体的中心坐标,将其在图像中绘制出来。
以下是我的尝试:
from PIL import Image
from numpy import *
from pylab import *
from scipy.ndimage import measurements,morphology,label
im=array(Image.open('test4.jpg').convert('L'))
im=1*(im<128)
#载入图像,然后使用阈值化操作,以保证处理的图像为二值图像
im_open=morphology.binary_opening(im,ones((5,5)),iterations=2)
labels_open,nbr_objects_open=measurements.label(im_open)
#求出每个物体中心点坐标
a=measurements.center_of_mass(im_open,labels_open,[i+1 for i in range(nbr_objects_open)])
figure()
gray()
imshow(im_open)
#在图像中把中心点绘制出来
plot([p[1] for p in a],[p[0] for p in a],'r*')
show()
这是代码中用到的‘test4.jpg’图像
如图,红星点即为所求中心点。