我有数百张图像,其中图像的底部包含倾斜的白色/灰色线条。我需要对那条线上方的斑点进行一些斑点检测和跟踪。
我需要替换所有图像帧中斜线上方和下方的所有像素。在所有图像中,线条的位置均相同。 有没有Matlab或python或R的方式来做到这一点。
这是两个示例图像。您可以看到底部有一条斜线。我需要将其替换为黑色像素,并将其下方的所有区域替换为黑色像素。
答案 0 :(得分:2)
该问题同时包含opencv
和python
标签,因此您可以使用OpenCV中可用的cv2.fillPoly()
函数。您将必须传递需要用黑色像素替换的图像的所有像素位置(在阵列中)。
以下是一个小例子:
考虑以下5x5形状的图像:
array([[255, 255, 255, 255, 255],
[255, 255, 255, 255, 255],
[255, 255, 255, 255, 255],
[255, 255, 255, 255, 255],
[255, 255, 255, 255, 255]])
现在我有一个像素位置数组,需要用pts
中的黑色像素替换:
array([[0, 4], [1, 4], [2, 3], [3, 3], [4, 3],
[0, 5], [1, 5], [2, 4], [3, 4], [4, 4],
[2, 5], [3, 5], [4, 5]])
使用cv2.fillPoly
:
cv2.fillPoly(a, pts1, 0)
这将返回:
array([[255, 255, 255, 255, 255],
[255, 255, 255, 255, 255],
[255, 255, 255, 255, 255],
[255, 255, 0, 0, 0],
[ 0, 0, 0, 0, 0]])
如果您具有所有必要的像素位置,则可以对图像扩展相同的方法。