要獲取輪廓內所有像素,可以通過使用`cv2.findContours()`函數找到輪廓,然后使用`cv2.drawContours()`函數將輪廓繪制在一副空白圖像上,最后使用numpy的`np.where()`函數獲取輪廓內的像素坐標。
以下是一個示例代碼:
```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)
# 創建一副空白圖像
blank_image = np.zeros_like(image)
# 繪制輪廓
cv2.drawContours(blank_image, contours, -1, (255, 255, 255), -1)
# 獲取輪廓內所有像素坐標
pixels = np.where(blank_image == 255)
# 打印輪廓內的像素坐標
for i in range(len(pixels[0])):
x = pixels[0][i]
y = pixels[1][i]
print(f'Pixel at ({x}, {y}): {image[x, y]}')
# 顯示結果
cv2.imshow('Contours', blank_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
這段代碼首先讀取一幅圖像,然后找到圖像中的輪廓,繪制輪廓在一副空白圖像上,并通過`np.where()`函數獲取輪廓內的像素坐標。最后打印出輪廓內的像素坐標,并顯示繪制有輪廓的圖像。