答案 0 :(得分:8)
如果你想要的是估计对象的位置,你可以使用图像的颜色来获得一个想法。所有下面的步骤都是使用scikit-image完成的。这些操作非常基础,是 Lab 色彩空间中的简单阈值处理(最基本的图像处理工具)。如果您想要在没有用户交互的情况下更复杂的事情,则需要更多的努力。
0)导入包
import numpy as np
from skimage import io, color
1)加载图像
rgb = io.imread('your_image_path')
2)将图像转换为Lab colorspace。对于大多数应用,Lab色彩空间通常具有更好的色彩分离性。
img = color.rgb2lab(rgb)
3)实验室颜色空间阈值
thresholded = np.logical_and(*[img[..., i] > t for i, t in enumerate([40, 0, 0])])
上面的行基本上会对图像进行阈值处理,并设置为 1 第一个通道中>40
的所有像素( L )和{{1在第2和第3个通道( a,b )中,将破坏任何这些条件的像素设置为 0 。
4)显示结果:
>0
如上所述,这是一个非常快速(不太好)的结果,但应该足以让你获得一个边界框。然后,您可以从from matplotlib import pyplot as plt
fig, ax = plt.subplots(ncols=2)
ax[0].imshow(rgb); ax[0].axis('off')
ax[1].imshow(thresholded); ax[1].axis('off')
plt.show()
图像中提取ymin, ymax, xmin, xmax
,然后您将拥有对象的边界框。