python写一份代码把yolov8分割出来的mask图返回成原图大小
时间: 2023-07-30 19:10:28 浏览: 905
好的,下面是一份Python代码,用于将YOLOv8分割出的mask图返回为原图大小:
```python
import cv2
import numpy as np
# 读取原图及mask图
img = cv2.imread('original_image.jpg')
mask = cv2.imread('yolov8_mask.jpg')
# 获取原图和mask图的大小
h, w, _ = img.shape
mh, mw, _ = mask.shape
# 将mask图重新调整为原图大小
mask_resized = cv2.resize(mask, (w, h), interpolation=cv2.INTER_NEAREST)
# 将mask图转换为灰度图
mask_gray = cv2.cvtColor(mask_resized, cv2.COLOR_BGR2GRAY)
# 将灰度图二值化,将所有非0像素值设置为255
_, mask_binary = cv2.threshold(mask_gray, 1, 255, cv2.THRESH_BINARY)
# 将二值化的mask图与原图进行按位与操作,得到分割出的目标
result = cv2.bitwise_and(img, img, mask=mask_binary)
# 显示结果
cv2.imshow('result', result)
cv2.waitKey(0)
```
这份代码中,我们首先读取了原图和YOLOv8分割出的mask图,并获取了它们的大小。然后,我们使用`cv2.resize()`函数将mask图重新调整为原图大小,并将其转换为灰度图。接着,我们使用`cv2.threshold()`函数将灰度图二值化,将所有非0像素值设置为255。最后,我们使用`cv2.bitwise_and()`函数将二值化的mask图与原图进行按位与操作,得到分割出的目标。最终,我们将结果显示出来。
注意:在运行代码之前,请将`original_image.jpg`和`yolov8_mask.jpg`替换为你自己的原图和mask图。
阅读全文