基于OpenCV的迷宫路径查找

附上代码:

python 复制代码
import cv2
import numpy as np

# 读取图像
img = cv2.imread("img_3.png")
thres_min = 150  # 二值化最小阈值

if not img is None:
    # 二值化处理
    ret, img = cv2.threshold(img, thres_min, 255, cv2.THRESH_BINARY)
    cv2.imshow("img_thres", img)

    # img备份,转换为灰度图,并反转
    copy = img.copy()
    copy = cv2.cvtColor(copy, cv2.COLOR_BGR2GRAY)
    ret, copy = cv2.threshold(copy, thres_min, 255, cv2.THRESH_BINARY_INV)
    cv2.imshow("copy", copy)

    # 查找轮廓,并绘制在全黑图像上
    contours, hierarchy = cv2.findContours(copy, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
    draw = np.zeros_like(img)
    cv2.drawContours(draw, contours, 0, (255, 255, 255), -2)
    cv2.imshow("img2", draw)

    # 进行膨胀腐蚀操作
    kernel = cv2.getStructuringElement(cv2.MORPH_RECT,(19,19))
    dilated = cv2.dilate(draw, kernel, iterations=2)
    cv2.imshow("dilate", dilated)
    eroded = cv2.erode(dilated, kernel, iterations=2)
    cv2.imshow("erode", eroded)

    # 膨胀腐蚀相减
    diff = cv2.absdiff(dilated, eroded)
    diff = cv2.cvtColor(diff, cv2.COLOR_BGR2GRAY)
    cv2.imshow("diff", diff)

    # 在差异图diff中查找轮廓,并在原图上绘制轮廓
    contours2, hierarchy2 = cv2.findContours(diff, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
    cv2.drawContours(img, contours2, 0, (0, 0, 255), -1)
    cv2.imshow("result", img)

cv2.waitKey(0)
cv2.destroyAllWindows()
相关推荐
蹦蹦跳跳真可爱5892 分钟前
Python----循环神经网络(Transformer ----注意力机制)
人工智能·深度学习·nlp·transformer·循环神经网络
空中湖2 小时前
tensorflow武林志第二卷第九章:玄功九转
人工智能·python·tensorflow
lishaoan772 小时前
使用tensorflow的线性回归的例子(七)
人工智能·tensorflow·线性回归
千宇宙航5 小时前
闲庭信步使用SV搭建图像测试平台:第三十一课——基于神经网络的手写数字识别
图像处理·人工智能·深度学习·神经网络·计算机视觉·fpga开发
onceco6 小时前
领域LLM九讲——第5讲 为什么选择OpenManus而不是QwenAgent(附LLM免费api邀请码)
人工智能·python·深度学习·语言模型·自然语言处理·自动化
whoarethenext8 小时前
使用 C++/OpenCV 和 MFCC 构建双重认证智能门禁系统
开发语言·c++·opencv·mfcc
jndingxin8 小时前
OpenCV CUDA模块设备层-----高效地计算两个 uint 类型值的带权重平均值
人工智能·opencv·计算机视觉
Sweet锦9 小时前
零基础保姆级本地化部署文心大模型4.5开源系列
人工智能·语言模型·文心一言
hie988949 小时前
MATLAB锂离子电池伪二维(P2D)模型实现
人工智能·算法·matlab
晨同学032710 小时前
opencv的颜色通道问题 & rgb & bgr
人工智能·opencv·计算机视觉