Python基于分水岭算法解决走迷宫游戏示例


Posted in Python onSeptember 26, 2017

本文实例讲述了Python基于分水岭算法解决走迷宫游戏。分享给大家供大家参考,具体如下:

#Solving maze with morphological transformation
"""
usage:Solving maze with morphological transformation
needed module:cv2/numpy/sys
ref:
1.http://www.mazegenerator.net/
2.http://blog.leanote.com/post/leeyoung/539a629aab35bc44e2000000
@author:Robin Chen
"""
import cv2
import numpy as np
import sys
def SolvingMaze(image):
#load an image
  try:
    img = cv2.imread(image)
  except Exception,e:
    print 'Error:can not open the image!'
    sys.exit()
#show image
  #cv2.namedWindow('image', cv2.WINDOW_NORMAL)
  cv2.imshow('maze_image',img)
#convert to gray
  gray_image = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
#show gray image
  #cv2.imshow('gray_image',gray_image)
#convert to binary image
  retval,binary_image = cv2.threshold(gray_image, 10,255, cv2.THRESH_BINARY_INV)
  #cv2.imshow('binary_image',binary_image)
  contours,hierarchy = cv2.findContours(binary_image, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)
  if len(contours) != 2:
    sys.exit("This is not a 'perfect maze' with just 2 walls!")
  h, w, d = img.shape
#The first wall
  path = np.zeros((h,w),dtype = np.uint8)#cv2.CV_8UC1
  cv2.drawContours(path, contours, 0, (255,255,255),-1)#cv2.FILLED
  #cv2.imshow('The first wall',path)
#Dilate the wall by a few pixels
  kernel = np.ones((19, 19), dtype = np.uint8)
  path = cv2.dilate(path, kernel)
  #cv2.imshow('Dilate the wall by a few pixels',path)
#Erode by the same amount of pixels
  path_erode = cv2.erode(path, kernel);
  #cv2.imshow('Erode by the same amount of pixels',path_erode)
#absdiff
  path = cv2.absdiff(path, path_erode);
  #cv2.imshow('absdiff',path)
#solution
  channels = cv2.split(img);
  channels[0] &= ~path;
  channels[1] &= ~path;
  channels[2] |= path;
  dst = cv2.merge(channels);
  cv2.imshow("solution", dst);
#waiting for any key to close windows
  cv2.waitKey(0)
  cv2.destroyAllWindows()
if __name__ == '__main__':
  image = sys.argv[-1]
  SolvingMaze(image)

更多关于Python相关内容可查看本站专题:《Python游戏开发技巧总结》、《Python数据结构与算法教程》、《Python Socket编程技巧总结》、《Python函数使用技巧总结》、《Python字符串操作技巧汇总》、《Python入门与进阶经典教程》及《Python文件与目录操作技巧汇总》

希望本文所述对大家Python程序设计有所帮助。

Python 相关文章推荐
python批量设置多个Excel文件页眉页脚的脚本
Mar 14 Python
Linux下Python安装完成后使用pip命令的详细教程
Nov 22 Python
Python 3.x基于Xml数据的Http请求方法
Dec 28 Python
python3使用QQ邮箱发送邮件
May 20 Python
pycharm 中mark directory as exclude的用法详解
Feb 14 Python
python编程进阶之类和对象用法实例分析
Feb 21 Python
python GUI库图形界面开发之PyQt5状态栏控件QStatusBar详细使用方法实例
Feb 28 Python
基于Python的OCR实现示例
Apr 03 Python
pandas DataFrame 数据选取,修改,切片的实现
Apr 24 Python
Python爬虫抓取指定网页图片代码实例
Jul 24 Python
Python经纬度坐标转换为距离及角度的实现
Nov 01 Python
Python编写冷笑话生成器
Apr 20 Python
Python计算斗牛游戏概率算法实例分析
Sep 26 #Python
Python使用修饰器执行函数的参数检查功能示例
Sep 26 #Python
浅谈python for循环的巧妙运用(迭代、列表生成式)
Sep 26 #Python
Python开发中爬虫使用代理proxy抓取网页的方法示例
Sep 26 #Python
Python3.4实现从HTTP代理网站批量获取代理并筛选的方法示例
Sep 26 #Python
python九九乘法表的实例
Sep 26 #Python
Python实现简单的HttpServer服务器示例
Sep 25 #Python
You might like
php Ubb代码编辑器函数代码
2012/07/05 PHP
PHP include任意文件或URL介绍
2014/04/29 PHP
PHP 正则表达式常用函数
2014/08/17 PHP
PHP实现的多彩标签效果代码分享
2014/08/21 PHP
php识别翻转iphone拍摄的颠倒图片
2018/05/17 PHP
php如何获取Http请求
2020/04/30 PHP
从阿里妈妈发现的几个不错的表单验证函数
2007/09/21 Javascript
javascript div 遮罩层封锁整个页面
2009/07/10 Javascript
js中获取事件对象的方法小结
2011/03/13 Javascript
zTree插件之单选下拉菜单实例代码
2013/11/07 Javascript
浅析AngularJS中的指令
2016/03/20 Javascript
AngularJS 指令的交互详解及实例代码
2016/09/14 Javascript
Seajs是什么及sea.js 由来,特点以及优势
2016/10/13 Javascript
使用JS批量选中功能实现更改数据库中的status状态值(批量展示)
2016/11/22 Javascript
微信小程序 form组件详解及简单实例
2017/01/10 Javascript
JS日程管理插件FullCalendar中文说明文档
2017/02/06 Javascript
Angular2中select用法之设置默认值与事件详解
2017/05/07 Javascript
ajax请求data遇到的问题分析
2018/01/18 Javascript
Vue中用props给data赋初始值遇到的问题解决
2018/11/27 Javascript
Vue实现手机计算器
2020/08/17 Javascript
python使用htmllib分析网页内容的方法
2015/05/08 Python
Python中类的初始化特殊方法
2017/12/01 Python
浅谈python实现Google翻译PDF,解决换行的问题
2018/11/28 Python
Python实现的爬取百度文库功能示例
2019/02/16 Python
Django如何开发简单的查询接口详解
2019/05/17 Python
Python视频编辑库MoviePy的使用
2020/04/01 Python
什么是Python包的循环导入
2020/09/08 Python
英国体育器材进口商店:UK Sport Imports
2017/03/14 全球购物
Kidsroom台湾:来自德国的婴儿用品
2017/12/11 全球购物
德国高品质男装及配饰商城:Cultizm(Raw Denim原色牛仔裤)
2018/04/16 全球购物
国家助学金获奖感言
2014/01/31 职场文书
社区文艺活动方案
2014/08/19 职场文书
2014年大学生村官工作总结
2014/11/19 职场文书
2016年党课培训学习心得体会
2016/01/07 职场文书
mysql如何能有效防止删库跑路
2021/10/05 MySQL
怎么禁用Win11输入法 最新Win11输入法关闭教程
2022/08/05 数码科技