写一个关于目标图像区域自动提取的代码
时间: 2023-06-04 07:05:09 浏览: 113
好的,这是一个有关目标图像区域自动提取的 Python 代码示例,使用了 OpenCV 库和 GrabCut 算法:
```
import cv2
# 加载图片
img = cv2.imread("image.jpg")
# 创建矩形 ROI
rect = (50, 50, 200, 200)
# 初始化掩码和背景模型/前景模型
mask = np.zeros(img.shape[:2], np.uint8)
bgdModel = np.zeros((1,65), np.float64)
fgdModel = np.zeros((1,65), np.float64)
# 运行 GrabCut 算法
cv2.grabCut(img, mask, rect, bgdModel, fgdModel, 5, cv2.GC_INIT_WITH_RECT)
# 根据掩码提取前景区域
mask2 = np.where((mask==2)|(mask==0), 0, 1).astype('uint8')
img_cut = img * mask2[:,:,np.newaxis]
# 显示结果
cv2.imshow("Original Image", img)
cv2.imshow("GrabCut Result", img_cut)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
这段代码使用 GrabCut 算法,首先创建一个矩形 ROI,然后运行 GrabCut 算法,使用掩码提取前景区域,并将其保存到变量 `img_cut` 中。最后将原始图片和 GrabCut 提取的前景区域进行比较。您可以在代码中修改 ROI 的位置和大小,以适应不同的图像和目标。
阅读全文