Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/281.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python OpenCV基于像素值查找轮廓_Python_Opencv - Fatal编程技术网

Python OpenCV基于像素值查找轮廓

Python OpenCV基于像素值查找轮廓,python,opencv,Python,Opencv,我有一个如图所示的图像,使用OpenCV,我想根据每个轮廓的颜色找到轮廓。此图像中的像素值为0、1和2 图像 我要找的是得到2个黄色轮廓,一个大的绿色轮廓和一个小的绿色轮廓在右边的第二个黄色轮廓内 Opencv在这里只提供了两个轮廓。实现这一目标的最佳方式是什么 到目前为止我的代码: import cv2 as cv import numpy as np img = cv.imread("seg_img.png",cv.IMREAD_UNCHANGED) # find c

我有一个如图所示的图像,使用OpenCV,我想根据每个轮廓的颜色找到轮廓。此图像中的像素值为0、1和2

图像

我要找的是得到2个黄色轮廓,一个大的绿色轮廓和一个小的绿色轮廓在右边的第二个黄色轮廓内

Opencv在这里只提供了两个轮廓。实现这一目标的最佳方式是什么

到目前为止我的代码:

import cv2 as cv
import numpy as np

img = cv.imread("seg_img.png",cv.IMREAD_UNCHANGED)

# find contour
contours, _ = cv.findContours(image =img, mode = cv.RETR_TREE,method = cv.CHAIN_APPROX_SIMPLE)

# loop through the contours and find area of each contour
for i,cnt in enumerate(contours):
   print(cv.contourArea(cnt))
像素值

np.unique(img)
2

根据上的文档,findContours是为二进制图像设计的。因此,一次对每种颜色(或id号)设置一个阈值,并获得轮廓。对每种颜色都这样做,并在相同的黑色背景图像上绘制轮廓。使用RETR_EXTERNAL获得每个阈值图像的外部轮廓。您应该得到4个轮廓,2个代表黄色,2个代表绿色。@fmw42不确定每种颜色的阈值是什么意思?有没有办法在opencv中只使用特定于阈值的颜色?我想首先我需要一个HSV用于图像,然后一次屏蔽一种颜色,然后应用阈值来查找每种颜色的颜色。这里有一个多处理版本,您可以简化。。。有关颜色的阈值设置,请参见