要获取轮廓内所有像素,可以通过使用`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()`函数获取轮廓内的像素坐标。最后打印出轮廓内的像素坐标,并显示绘制有轮廓的图像。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。