我正在使用OpenCV在Python上进行图像处理。我试图在图像上覆盖一个轮廓线,该轮廓线是从蒙版中生成的。我使用
cv2.Canny()
获取蒙版的轮廓线,然后使用cv2.cvtColor()
将其更改为颜色,最后使用outline[np.where((outline == [255,255,255]).all(axis=2))] = [180,105,255]
将该边缘转换为青色。我的问题是这是一条只有一个像素宽度的线,在大图片上几乎看不见。此轮廓线除了我使用cv2.bitwise_or(img, outline)
作为蒙版应用到彩色图像上的点之外,全部为[0,0,0]
。
我目前正在通过暴力方式加粗这个轮廓线,并检查位图中的每个像素,以检查它的任何邻居是否为[180,105,255],如果是,该像素也会发生变化。这非常慢。有没有办法使用numpy或openCV自动完成这项工作?我希望可以使用一些条件索引来处理numpy,但找不到任何有用的东西。
dilated = cv2.dilate(im, np.ones((3, 3)))
。其中,im
为原始图像,np.ones((3, 3))
创建了一个大小为3x3的全1矩阵作为膨胀核。 - Miki