全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

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

本文实例讲述了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实现的生成随机迷宫算法核心代码分享(含游戏完整代码)  # Python解决走迷宫问题算法示例  # 用Python代码来解图片迷宫的方法整理  # Python基于递归算法实现的走迷宫问题  # Python深度优先算法生成迷宫  # Python使用Tkinter实现机器人走迷宫  # Python使用回溯法子集树模板解决迷宫问题示例  # 一道python走迷宫算法题  # Python 实现递归法解决迷宫问题的示例代码  # python实现地牢迷宫生成的完整步骤  # 进阶  # 操作技巧  # 相关内容  # 数据结构  # 给大家  # 更多关于  # 所述  # 程序设计  # 使用技巧  # 游戏开发  # 编程技巧  # 讲述了  # np  # Chen  # import  # image  # SolvingMaze  # def  # leeyoung 


相关文章: 如何在Windows环境下新建FTP站点并设置权限?  如何通过可视化优化提升建站效果?  ,网站推广常用方法?  怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?  javascript中的try catch异常捕获机制用法分析  网站制作壁纸教程视频,电脑壁纸网站?  SAX解析器是什么,它与DOM在处理大型XML文件时有何不同?  建站之星安装后如何配置SEO及设计样式?  宝塔新建站点报错如何解决?  建站与域名管理如何高效结合?  无锡制作网站公司有哪些,无锡优八网络科技有限公司介绍?  高端建站如何打造兼具美学与转化的品牌官网?  Python文件管理规范_工程实践说明【指导】  如何在七牛云存储上搭建网站并设置自定义域名?  建站之星与建站宝盒如何选择最佳方案?  文字头像制作网站推荐软件,醒图能自动配文字吗?  如何快速上传建站程序避免常见错误?  如何通过PHP快速构建高效问答网站功能?  建站之星如何助力企业快速打造五合一网站?  小型网站建站如何选择虚拟主机?  深圳防火门网站制作公司,深圳中天明防火门怎么编码?  如何选择最佳自助建站系统?快速指南解析优劣  c# Task.Yield 的作用是什么 它和Task.Delay(1)有区别吗  网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?  如何通过老薛主机一键快速建站?  建站之星官网登录失败?如何快速解决?  如何通过FTP服务器快速搭建网站?  建站之星安装失败:服务器环境不兼容?  详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)  定制建站流程解析:需求评估与SEO优化功能开发指南  建站主机选购指南:核心配置与性价比推荐解析  Dapper的Execute方法的返回值是什么意思 Dapper Execute返回值详解  专业商城网站制作公司有哪些,pi商城官网是哪个?  Android滚轮选择时间控件使用详解  天津个人网站制作公司,天津网约车驾驶员从业资格证官网?  建站主机功能解析:服务器选择与快速搭建指南  javascript中对象的定义、使用以及对象和原型链操作小结  C#怎么创建控制台应用 C# Console App项目创建方法  如何正确下载安装西数主机建站助手?  建站主机核心功能解析:服务器选择与网站搭建流程指南  c++怎么用jemalloc c++替换默认内存分配器【性能】  教学网站制作软件,学习*后期制作的网站有哪些?  企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?  如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?  杭州银行网站设计制作流程,杭州银行怎么开通认证方式?  已有域名和空间,如何快速搭建网站?  我的世界制作壁纸网站下载,手机怎么换我的世界壁纸?  网站制作员失业,怎样查看自己网站的注册者?  建站之星安装提示数据库无法连接如何解决?  如何通过网站建站时间优化SEO与用户体验? 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。