首页 > 编程 > Python > 正文

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

2019-11-25 15:49:36
字体:
来源:转载
供稿:网友

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

#Solving maze with morphological transformation"""usage:Solving maze with morphological transformationneeded module:cv2/numpy/sysref:1.http://www.mazegenerator.net/2.http://blog.leanote.com/post/leeyoung/539a629aab35bc44e2000000@author:Robin Chen"""import cv2import numpy as npimport sysdef 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程序设计有所帮助。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表