【问题标题】:detect the main object of the image and remove the background检测图像的主要对象并去除背景
【发布时间】:2021-01-04 22:19:39
【问题描述】:

我需要检测图像中的主要(前)汽车,以将其放入另一个没有背景或背景简单的图像中。 下面是一个示例图像:

我正在使用 Python 3 和 OpenCV 4 进行开发。

我尝试了 HaarCascade,但效果不佳,即使在 detectMultiScale 中有许多不同的超参数:

car_cascade = cv2.CascadeClassifier('./haarcascade/haarcascade_car.xml') 

car_detected = car_cascade.detectMultiScale(img_gray1, 2.2, 4)

cars_with_detections = np.copy(img1)

for (x, y, w, h) in car_detected:
    cv2.rectangle(cars_with_detections, (x, y), (x+w, y+h), (255, 0, 0), 5)

plt.figure(figsize=(25,15))
plt.imshow(cars_with_detections)

【问题讨论】:

  • 你确定“haarcascade_car.xml”可以正常工作吗?

标签: python opencv image-processing computer-vision haar-classifier


【解决方案1】:

由于其他红色汽车和其他物体,这张图片的背景很难移除(同时保留汽车的形状)。
我尝试了各种方法:模糊(高斯滤镜、箱形滤镜等)。

如果您只需要对一张图片执行此操作,并且只将汽车放入另一张图片中,那么使用 Photoshop 和 Magic Wand 工具可能会更好。

但是,通过 GRIP(图形表示图像处理)软件中的实验,我能够通过纯 OpenCV 处理非常接近。

这是我的管道:

原图:

  1. CV 减法(减去汽车的“红色”颜色以获得汽车的深色斑点)
    (红色)

  2. HSV 阈值(用汽车车身创建一个遮罩)

  3. 模糊(模糊 HSV 阈值以获得更坚实的蒙版)

  4. 查找轮廓(通过模糊蒙版查找车身轮廓)

  5. 蒙版(将蒙版应用于原始图像以获取汽车的像素)

我知道我的代码可能没有产生您希望的结果,但我希望您感谢我的努力和时间以及我的替代解决方案。

这里是link 下载GRIP

这里是link,用于将图像处理管道代码下载为 Python 文件和 GRIP 文件

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-04
    • 2019-03-20
    • 1970-01-01
    • 1970-01-01
    • 2018-11-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多