如何解决检测图像的主要对象并删除背景
我需要检测图像中的主要(前部)汽车,以将其放置在无背景或纯背景的另一幅图像中。 下面是一个示例图片:
我正在使用OpenCV 4在Python 3中进行开发。
我尝试了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),5)
plt.figure(figsize=(25,15))
plt.imshow(cars_with_detections)
解决方法
由于其他红色汽车和杂物,该图像的背景很难去除(在保持汽车形状的同时)。
我尝试了多种方法:模糊(高斯滤波器,盒式滤波器等)。
如果只需要对一个图像执行此操作,而仅将汽车放在另一个图像中,则使用Photoshop和Magic Wand工具可能会更好。
但是,通过GRIP(以图形表示的图像处理)软件进行的实验,我仅通过纯OpenCV处理就可以接近。
我知道我的代码可能没有达到您期望的结果,但是我希望您感谢我的努力和时间以及我的替代解决方案。
这是link,可下载GRIP
这是link,用于将图像处理管道代码下载为Python文件和GRIP文件
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。