形状内の画素のインデックスを見つける:OpenCVのとPython

クレムソン:

私は私の前処理工程から受信したこと(必ずしも凸状)に湾曲し、中空形状のマスクを持っているとします。

白丸マスク

私は今、試してみて、発生するすべてのピクセルを選択したいの内部でその形状となるように、マスクに追加します:

黒丸マスク

どのように私はPythonでこれを行うことができますか?


例を生成するためのコード:

import cv2
import numpy as np
import matplotlib.pyplot as plt

# Parameters for creating the circle
COLOR_BLUE = (255, 0, 0)
IMAGE_SHAPE = (256, 256, 3)
CIRCLE_CENTER = tuple(np.array(IMAGE_SHAPE) // 2)[:-1]
CIRCLE_RADIUS = 30
LINE_THICKNESS = 5 # Change to -1 for example of filled circle

# Draw on a circle
img = np.zeros(IMAGE_SHAPE, dtype=np.uint8)
img_circle = cv2.circle(img, CIRCLE_CENTER, CIRCLE_RADIUS, COLOR_BLUE, LINE_THICKNESS)
circle_mask = img_circle[:, :, 0]

# Show the image
plt.axis("off")
plt.imshow(circle_mask)
plt.show()
busybear:

使用しfloodFill、円の外側を埋めるために。次に使うnp.whereの円内のピクセルを見つけるために、

cv2.floodFill(circle_mask, None, (0, 0), 1)
np.where(circle_mask == 0)

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=13015&siteId=1