用opencv感兴趣区域提取(圆形区域)

import cv2
import numpy as np
from glob import glob
import os

img_path = glob(r"F:/YjnJiaNing/val/l1/*.jpg")
path_save = r"F:/YjnJiaNing/val/region_of_interest/L1_ROI"

for i, file in enumerate(img_path):
    name = os.path.join(path_save, "%d.png" % i)
    image = cv2.imread(file)
    gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
    _, binary = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY | cv2.THRESH_OTSU)
    contours, _ = cv2.findContours(binary, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
    for cont in contours:
        (x, y), radius = cv2.minEnclosingCircle(cont)
        if radius > 200:
            ming = cv2.circle(image, (int(x), int(y)), int(radius), (0, 0, 255), 2)
            print("radius is ")
            print(radius)
            print((x, y))
            roi = np.zeros(image.shape[:2], np.uint8)
            roi = cv2.circle(roi, (int(x), int(y)), int(radius), 255, cv2.FILLED)
            mask = np.ones_like(image) * 255
            mask = cv2.bitwise_and(mask, image, mask=roi) + cv2.bitwise_and(mask, mask, mask=~roi)
            cv2.imwrite(name, mask)
            print(i, name)

 

用opencv感兴趣区域提取(圆形区域)_第1张图片 原图

 

用opencv感兴趣区域提取(圆形区域)_第2张图片 取圆后图像

 

你可能感兴趣的:(opencv,python,计算机视觉)