如何在python中找到坐标未知的曲线区域?

2024-04-26 22:49:04 发布

您现在位置:Python中文网/ 问答频道 /正文

因此,我目前正在进行一个项目,我需要找到一个特定的厘米方面的面积曲线。曲线问题是曲线有多个颜色,每个颜色代表不同的值 Something Like This

有人能帮我吗?图像中有多条这样的曲线。如何在Python中同时计算它们。你知道吗


Tags: 项目图像颜色代表this曲线somethinglike
2条回答

您可以使用以下代码以像素为单位打印区域。要获得以cm^2为单位的面积,您需要知道像素和实际长度之间的关系。你知道吗

下面的代码打印图像中最大斑点的区域。 要获得图像中所有斑点的面积,只需将[c]替换为contours

import cv2
import numpy as np 


img = cv2.imread("image.png", 0)
blank = np.zeros_like(img)

ret, thresh = cv2.threshold(img, 0 ,255, cv2.THRESH_BINARY)
im2, contours, hierarchy = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)

if( len(contours) != 0 ):
    c = max(contours, key = cv2.contourArea)
    cv2.drawContours(blank, [c], -1, 255, -1)
    print cv2.countNonZero(blank)

cv2.imshow("img", blank)
cv2.waitKey(0)
cv2.destroyAllWindows()

编辑:

import cv2
import numpy as np 

img = cv2.imread("images.png", 0)
blank = np.zeros_like(img)

ret, thresh = cv2.threshold(img, 0 ,255, cv2.THRESH_BINARY)
im2, contours, hierarchy = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)

for i in range(len(contours)):
    cv2.drawContours(blank, contours[i], -1, 255, -1)
    print "area of contour " + str(i)+" = " + str(cv2.contourArea(contours[i]))
    cv2.imshow("img", blank)
    cv2.waitKey(0)
cv2.destroyAllWindows()

1、把不同颜色的斑点分开。它们看起来像是由其他一些绘图软件生成的,所以大概颜色是固定的和已知的。为每种颜色创建一个新图像

2.对于只包含固定颜色和黑色背景的斑点的图像,可以绘制轮廓的轮廓(请参见findContours)。Opencv将为每个blob提供一个单独的轮廓。你知道吗

3,计算每个轮廓的面积-有一个opencv函数可以做到这一点。你知道吗

相关问题 更多 >