opencv实现回形遍历像素算法
本文实例为大家分享了opencv实现回形遍历像素算法的具体代码,供大家参考,具体内容如下
代码实现
#-*-coding:utf-8-*-
importcv2
importnumpyasnp
cv2.namedWindow('img',0)
deftraversePixelByCycloidLine(image):
"""
从一副灰度图像的中心开始向边缘按回形线的方式遍历所有像素,每个像素只能访问一次。
我目前实现了基本的算法,但存在以下问题:
1)只支持方阵,且行列为奇数
2)只实现,代码没整理
"""
h,w=image.shape[:2]
asserth==wandh%2==1,'只支持方阵,且行列为奇数'
center_x,center_y=[w//2,h//2]
traverse_num=h*w
cycloid_num=0
value=1
whileTrue:
foriinrange(cycloid_num*2+1):
ifvalue>=traverse_num:
returnimage
center_x=center_x+1
image[center_y,center_x]=255
value+=1
cv2.imshow('img',image)
cv2.waitKey(33)
foriinrange(cycloid_num*2+1):
ifvalue>=traverse_num:
returnimage
center_y=center_y+1
image[center_y,center_x]=255
value+=1
cv2.imshow('img',image)
cv2.waitKey(33)
foriinrange(cycloid_num*2+2):
ifvalue>=traverse_num:
returnimage
center_x=center_x-1
image[center_y,center_x]=255
value+=1
cv2.imshow('img',image)
cv2.waitKey(33)
foriinrange(cycloid_num*2+2):
ifvalue>=traverse_num:
returnimage
center_y=center_y-1
image[center_y,center_x]=255
value+=1
cv2.imshow('img',image)
cv2.waitKey(33)
cycloid_num+=1
image_wh=11
whileTrue:
image=np.zeros((image_wh,image_wh,3),dtype=np.uint8)
traversePixelByCycloidLine(image)
效果展示
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。