溫馨提示×

opencv如何獲取輪廓內(nèi)所有像素

小億
192
2024-05-29 10:40:45
欄目: 編程語言

要獲取輪廓內(nèi)所有像素,可以通過使用`cv2.findContours()`函數(shù)找到輪廓,然后使用`cv2.drawContours()`函數(shù)將輪廓繪制在一副空白圖像上,最后使用numpy的`np.where()`函數(shù)獲取輪廓內(nèi)的像素坐標(biāo)。

以下是一個(gè)示例代碼:

```python

import cv2

import numpy as np

# 讀取圖像

image = cv2.imread('input.jpg')

gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# 二值化

ret, thresh = cv2.threshold(gray, 127, 255, 0)

# 尋找輪廓

contours, _ = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

# 創(chuàng)建一副空白圖像

blank_image = np.zeros_like(image)

# 繪制輪廓

cv2.drawContours(blank_image, contours, -1, (255, 255, 255), -1)

# 獲取輪廓內(nèi)所有像素坐標(biāo)

pixels = np.where(blank_image == 255)

# 打印輪廓內(nèi)的像素坐標(biāo)

for i in range(len(pixels[0])):

x = pixels[0][i]

y = pixels[1][i]

print(f'Pixel at ({x}, {y}): {image[x, y]}')

# 顯示結(jié)果

cv2.imshow('Contours', blank_image)

cv2.waitKey(0)

cv2.destroyAllWindows()

```

這段代碼首先讀取一幅圖像,然后找到圖像中的輪廓,繪制輪廓在一副空白圖像上,并通過`np.where()`函數(shù)獲取輪廓內(nèi)的像素坐標(biāo)。最后打印出輪廓內(nèi)的像素坐標(biāo),并顯示繪制有輪廓的圖像。

0