opencv python3 找图片色块_OpenCV中色块的检测与标注

本文介绍如何在Jupyter notebook中利用OpenCV和Python检测图像中的不同色块,并进行标注。通过下载图片,转换为RGBA数组,找出所有独特颜色,然后遍历颜色并找到对应像素,创建一个标记矩阵,最终用pcolormesh展示颜色区域。这种方法适用于颜色区分明显的图像,对于颜色相近的像素,可能需要进一步处理以归类到同一特征中。
摘要由CSDN通过智能技术生成

我在Jupyter笔记本上工作。首先下载您的图像:!wget https://i.stack.imgur.com/SJxo3.png

然后从您的pic创建一个RGBA数组:

^{pr2}$

我们希望在您的图片上有一组不同的颜色,因此我们创建了一组:colors=set()

for each in arr:

for EACH in each:

colors.add(tuple(EACH.tolist()))

我们要循环这些颜色并选择每种颜色出现的区域。我们从以下几点开始:for index, each in enumerate(colors):

现在每个颜色都是一个元组,在这个for循环中,当前是一个元组,我们需要一个列表,因此:color=[]

for EACH in each:

color.append(EACH)

我们现在创建一个包含布尔值的数组,如果相应的RGBA组件与我们当前检查的颜色相同,则为True:boolarr=[]

for eachinarr2 in [arr == color]:

boolarr.append(eachinarr2)

然后我们选择与我们当前检查的颜色相同的像素,即RGBA的四个分量都匹配(因此我们有相同的颜色)。我们将这些像素cordinate存储在indexx和INDEXX中。在featurepixels=[]

for indexx, eachh in enumerate(boolarr[0]):

for INDEXX, EACHH in enumerate(eachh):

if EACHH.all() =

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在 OpenCV 进行黑色色块的识别,可以按照以下步骤进行: 1. 将图像转换为灰度图像:使用 OpenCV 的 cvtColor() 函数将图像从默认的 BGR 颜色空间转换为灰度图像。 ```python gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) ``` 2. 应用阈值分割:使用阈值分割方法,将灰度图像二值化。可以使用简单阈值(threshold)或自适应阈值(adaptiveThreshold)方法。对于黑色色块的识别,可以使用适当的阈值将较暗的区域设为白色,其他区域设为黑色。 ```python _, binary = cv2.threshold(gray, threshold_value, 255, cv2.THRESH_BINARY) ``` 3. 进行形态学操作(可选):根据需要,可以进行形态学操作来增强黑色色块的连通性或去除噪声。可以尝试使用腐蚀(erode)和膨胀(dilate)等操作。 ```python kernel = np.ones((kernel_size, kernel_size), np.uint8) erosion = cv2.erode(binary, kernel, iterations=1) dilation = cv2.dilate(erosion, kernel, iterations=1) ``` 4. 查轮廓:使用 findContours() 函数查二值图像的轮廓。 ```python contours, _ = cv2.findContours(dilation, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) ``` 5. 分析和筛选:根据您的需求,可以对轮廓进行分析和筛选。例如,可以根据轮廓的面积、周长等特征来筛选出较大的黑色色块。 ```python for contour in contours: area = cv2.contourArea(contour) if area > min_area: # 处理符合条件的黑色色块 ``` 这是一个基本的流程,具体实现还需要根据您的具体需求和图像特点进行
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值