蓝色笔是轮廓红笔是直线我怎样才能找到直线和等高线相交的两个区域现在我可以通过下式得到等值线面积area = cv2.contourArea(np.array( [ [i] for i in blue_points ] ))
area = cv2.contourArea(np.array( [ [i] for i in blue_points ] ))
waxmsbnn1#
一种简单但可能不是最有效的方法是使用cv.drawContours和cv.line创建两个映像:一个具有斑点的轮廓,另一个具有线的轮廓,然后将它们一起cv.bitwise_and,并且任何仍然为正的点将是交点。
cv.drawContours
cv.line
cv.bitwise_and
hgtggwj02#
Shapelylibrary使它更快。假设你有等高线和直线的点:
Shapely
from shapely.geometry import Polygon, LineString poly = Polygon([(5,5), (10,10), (10,0)]) a = LineString([(0, 0), (8, 8)]) print(a.intersects(poly))
有加速代码的选项。未选中。
2条答案
按热度按时间waxmsbnn1#
一种简单但可能不是最有效的方法是使用
cv.drawContours
和cv.line
创建两个映像:一个具有斑点的轮廓,另一个具有线的轮廓,然后将它们一起cv.bitwise_and
,并且任何仍然为正的点将是交点。hgtggwj02#
Shapely
library使它更快。假设你有等高线和直线的点:
有加速代码的选项。未选中。