使用opencv cv2.drawContours的时候,画出来的区域,与实际区域不重合
使用opencv cv2.drawContours的时候,画出来的区域,与实际区域不重合
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
2条回答 默认 最新
关注 引自免费微信小程序:皆我百晓生
在您提供的代码中,看起来您正在尝试找出图像中的轮廓并绘制出来。然而,由于您没有提供具体的图像数据和完整的上下文,我将基于您给出的代码片段提供一些可能的解决方案。
首先,确保您已经正确地读取了图像,并进行了预处理,比如灰度化、二值化等操作,以便于找到有效的轮廓。这里是一个基本的示例,展示了如何进行这些步骤以及绘制轮廓:
import cv2 import numpy as np # 读取图像 img = cv2.imread("your_image.jpg") # 替换为您的图像文件路径 # 将图像转换为灰度 gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 对图像应用阈值(这里使用Otsu's二值化方法) _, thresh = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU) # 寻找轮廓 contours, _ = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) # 创建一个与原图像大小相同的空白图像用于绘制轮廓 img2 = np.zeros_like(img, dtype=np.uint8) img2[:] = img[:] # 绘制轮廓 cv2.drawContours(img2, contours, -1, (0, 255, 0), 1) # 显示结果 cv2.imshow('Contours', img2) cv2.waitKey(0) cv2.destroyAllWindows()
如果您已经完成了上述步骤并且仍然遇到问题,那么可能是由于图像的预处理不够理想导致的。您可以尝试调整二值化的参数,例如使用不同的阈值方法(如固定阈值)或者对图像进行滤波(如 median blur 或 Gaussian blur)来减少噪声。此外,检查轮廓检测是否正确,可以使用
cv2.drawContours
来显示原始轮廓,看看它们是否符合预期。如果您能提供图像样本和具体的问题描述(例如,轮廓与实际区域的偏差情况),我可以为您提供更精确的帮助。
本回答被题主选为最佳回答 , 对您是否有帮助呢?解决评论 打赏 举报 编辑记录无用 1
悬赏问题
- ¥15 采用ansys进行机翼在特定路径下的打孔过程中的受力分析
- ¥15 单片机adb主机连接手机,usb调试密钥无法保存
- ¥15 已知X和Y有以下关系,求X和Y的关系式
- ¥15 net core 同时编辑怎么防止数据多保存了
- ¥15 matlab做ba模型让其在ba和er规则下生长
- ¥50 有偿!centos curl port设置问题
- ¥15 请问Quartus的Verilog代码怎么写?
- ¥100 Mac 版foxmail 收邮件问题
- ¥15 QWebEngineView
- ¥15 如何使用shufflenet进行手写数字识别