常州机器视觉培训

常州上位机软件开发

常州工业机器人编程设计培训

常州PLC培训

常州PLC

常州PLC编程培训

常州电工培训

常州和讯plc培训中心欢迎您!
热门课程
联系方式
  • 常州和讯自动化培训中心
  • 常州市新北区府琛商务广场2号楼1409室
  • 电话:0519-85602926
  • 手机:15861139266 13401342299
当前位置:网站首页 > 新闻中心 新闻中心
opencv用来解迷宫-常州上位机培训,常州机器视觉培训
日期:2024-4-26 16:47:35人气:  标签:常州上位机培训 常州机器视觉培训

该脚本仅适用于完美迷宫,即只有一个唯一解、没有分段、没有圆形区域和没有开放区域的迷宫。

这些完美的迷宫可以使用在线迷宫生成工具生成。

让我们以这个简单的迷宫作为测试图像:

解决完美迷宫的步骤是:


1. 加载源图像。

2. 将给定图像转换为二值图像。

3.提取轮廓

4 进行像素膨胀和腐蚀路径。

5.从膨胀图像中减去腐蚀图像得到最终输出即迷宫的解。


//Opencv C++ Program to solve mazes using mathematical morphology

#include <opencv2/highgui/highgui.hpp>

#include <opencv2/imgproc/imgproc.hpp>

#include <cmath>

#include <iostream>


using namespace cv;

using namespace std;


int main()

{

    Mat src = imread("C:\\Users\\arjun\\Desktop\\opencv-maze-generator.png");

    if (!src.data) { printf("Error loading src \n"); return -1; }


    //Convert the given image into Binary Image

    Mat bw;

    cvtColor(src, bw, CV_BGR2GRAY);

    threshold(bw, bw, 10, 255, CV_THRESH_BINARY_INV);


    //Detect Contours in an Image

    vector<std::vector<cv::Point> > contours;

    findContours(bw, contours, CV_RETR_EXTERNAL, CV_CHAIN_APPROX_NONE);


    if (contours.size() != 2)

    {

        // "Perfect maze" should have 2 walls

        std::cout << "This is not a 'perfect maze' with just 2 walls!" << std::endl;

        return -1;

    }


    Mat path = Mat::zeros(src.size(), CV_8UC1);

    drawContours(path, contours, 0, CV_RGB(255, 255, 255), CV_FILLED);


    //Dilate the Image

    Mat kernel = Mat::ones(21, 21, CV_8UC1);

    dilate(path, path, kernel);


    //Erode the Image

    Mat path_erode;

    erode(path, path_erode, kernel);


    //Subtract Eroded Image from the Dilate One

    absdiff(path, path_erode, path);


    //Draw the Path by Red Color

    vector<Mat> channels;

    split(src, channels);

    channelsimage.png &= ~path;

    channelsimage.png &= ~path;

    channelsimage.png |= path;


    Mat dst;

    merge(channels, dst);

    imshow("solution", dst);

    waitKey(0);


    return 0;

}



1.输入:

image.png

2.将给定的图像转换为二进制后:

image.png

3.检测轮廓后:

image.png

4. 膨胀后:

image.png

5. 应用侵蚀后:

image.png

6.从腐蚀中减去膨胀图像后:

image.png

7. 用红色追踪路径(最终输出):

image.png

本文网址:
下一篇:没有资料

相关信息:
版权所有 CopyRight 2006-2017 江苏和讯自动化设备有限公司 常州自动化培训中心 电话:0519-85602926 地址:常州市新北区府琛商务广场2号楼1409室
苏ICP备14016686号-2 技术支持:常州山水网络
本站关键词:常州PLC培训 常州PLC编程培训 常州PLC编程 常州PLC培训班 网站地图 网站标签
在线与我们取得联系