117.info
人生若只如初见

opencv如何获取轮廓内所有像素

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

未经允许不得转载 » 本文链接:https://www.117.info/ask/fe458AzsIBA5WDFY.html

推荐文章

  • OpenCV怎么进行人群密度估计

    在OpenCV中进行人群密度估计通常需要使用计算机视觉和图像处理技术。以下是一个简单的步骤,可以帮助您在OpenCV中进行人群密度估计: 加载图像或视频数据:首先,...

  • OpenCV怎么进行景深估计

    OpenCV提供了一些用于景深估计的函数和算法,可以帮助你估计图像中不同区域的景深信息。下面是一个简单的示例代码,展示了如何使用OpenCV进行景深估计:
    im...

  • OpenCV怎么实现快速的图像分类和标注

    在OpenCV中,可以使用支持向量机(SVM)来实现快速的图像分类和标注。以下是一个简单的示例代码,展示了如何使用OpenCV中的SVM来对图像进行分类和标注:
    im...

  • OpenCV支持的图像增强技术有哪些

    OpenCV支持的图像增强技术包括但不限于以下几种: 亮度和对比度调整:可以通过调整图像的亮度和对比度来增强图像的清晰度和细节。 直方图均衡化:通过直方图均衡...

  • Python怎么画出漂亮的地图

    要在Python中画出漂亮的地图,最常用的库是matplotlib和Basemap。以下是一个简单的例子,展示如何使用Basemap库来画出世界地图:```pythonfrom mpl_toolkits.bas...

  • linux怎么获取windows文件

    在Linux系统中,有几种方法可以获取Windows文件:1. 使用Samba:Samba是一个可以让Linux系统与Windows共享文件的工具。你可以通过在Linux系统中安装和配置Samba,...

  • hbase删除表数据不删除表怎么实现

    要删除HBase表中的数据而不删除表本身,可以使用HBase Shell或者HBase API来实现。以下是使用HBase Shell删除表数据的步骤: 打开HBase Shell并连接到HBase集群。...

  • c#中datatable删除行的方法是什么

    在C#中,可以使用DataTable的Rows属性和Remove方法来删除行。具体的方法如下:
    // 假设 dt 是一个DataTable对象
    DataRow[] rowsToDelete = dt.Select(...