js image 获取rgb_python PIL Image 画圆获取图片的区域

通过不同的像素点为圆心,取不同的圆的半径大小,从而获取不同的圆的区域

方法步骤:

1、以特定的步长遍历图片的像素点为圆心

2、设置该圆心的上的特定半径的列表 如[r for in range(50,300,10)],从而获取半径列表

3、循环1、2、步骤,获取在图片的所有圆的图片

应用:获取图片可以进一步处理如 图像识别等

改进:可以使用正方形或其他曲线图形获取特定区域图片

上代码

import numpy as npfrom PIL import Imageimport math#预定义 variableheadacc=[]imglist=[]movearealist=[]#加载原始图片 转换为narray 类型img_arr=np.array(Image.open("people.png").convert("RGB"))#获取image的 shape,np取得的行和列 对应图片的height 和 widthcolumns,rows,tunnel=img_arr.shape#定义最大半径maxr=100#一般用户处理边界问题 同时指定最小半径halfr=int(maxr/2)#圆心的位置,可以根据实际情况调整起止区间 和步长for row in range(maxr,rows-maxr,10):    for col in range(maxr,columns-maxr,10):        #半径的长度,可以根据实际情况调整起止区间 和步长         for r in range(halfr,maxr,10):            #开始画圆 取圆区域内的像素点            #初始化相同尺寸的Image图片            newheadimg=np.array([255]*256*256*3,dtype=np.uint8).reshape(256,256,3)            #动态半径            x_start,x_end=row-r,row+r            y_start,y_end=col-r,col+r            #print("w,h,r,dr",row,col,r,dr)            print("w,h,r,dr",row,col,r)            for newhead_x in range(x_start,x_end+1):                for newhead_y in range(y_start,y_end+1):                    #try:                    if float(math.sqrt((row-newhead_x)**2+(col-newhead_y)**2))>float(r):                        newheadimg[newhead_x][newhead_y]=[255,255,255]                    else:                        newheadimg[newhead_x][newhead_y]=img_arr[newhead_x][newhead_y]                     #except:                    #    pass            Image.fromarray(newheadimg).save("log/"+str(row)+"_"+str(col)+"_"+str(r)+"_"+"headimg.png")                #
1eef5ac811d5e1ef28be9fa167c089e6.png

孩子画的悟空图片

图片获取的后的圆形图片

492651137956c805981a0d181c6ed72b.png

圆形图片的截图

环境:python3 win10

#科技青年# #423头条知识节#

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值