Python基于分水岭算法解决走迷宫游戏示例
发布时间:2020-05-24 14:50:10 所属栏目:Python 来源:互联网
导读:本文实例讲述了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,(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程序设计有所帮助。 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
