Python openCV在复杂图像上查找轮廓

2024-09-27 17:46:49 发布

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

我在从天空(屋顶)的图像上查找轮廓时遇到问题,这是屋顶的原始图像:enter image description here

所以我需要找到所有的边缘,屋顶上的窗户,这样我才能测量面积。我现在得到的结果是:enter image description here

所以问题在于树木、草地、道路。。。你能给我一些建议吗?我该怎么办?谢谢:)


Tags: 图像建议边缘天空轮廓窗户草地面积
1条回答
网友
1楼 · 发布于 2024-09-27 17:46:49

很可能您已经将图像转换为灰度,然后应用Canny边缘检测。因此,Canny输出图像中的每个特征

我有一个两步解决方案:



  • 为了减少图像中的细节(草、森林等),我们需要平滑图像,因此一种解决方案是高斯模糊。正如您从下表中所看到的那样(图像被减少了2个采样以适应屏幕),随着ksize的增加,将显示较小的特征。我认为您可以计算或测量与(9x9)结果输出的距离

^{tb1}$

(9 x 9)的代码

import cv2

img = cv2.imread("7m5oq.jpg")
gry = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
blr = cv2.GaussianBlur(gry, (9, 9), 0)
cny = cv2.Canny(blr, 50, 200)
cnt, _ = cv2.findContours(cny, cv2.RETR_TREE, cv2.CHAIN_APPROX_NONE)
img = cv2.drawContours(img, cnt, -1, (0, 0, 255), thickness=1)
cv2.imshow("Gaussian", blr)
cv2.imshow("Canny", cny)
cv2.imshow("Contour", cnt)
cv2.waitKey(0)

相关问题 更多 >

    热门问题