操作数组的方法,js数组的操作方法
一、遍历图片三个通道像素点,并修改相应的RGB def access _ pixels(image):print(image。形状)高度=图像。shape[0]width=图像。shape[1]通道=图像。shape[2]print( width:% s height:% s channels:% s %(width,height,channels)):for col in range(width):for c in range(channels):PV=image[row,col,c] #获取每个像素点的每个通道的数值image[row,col,c]=255 - pv #灰度值是0-255 这里是修改每个像素点每个通道灰度值cv2。im show( Reverse _ phase _ image ,image)if _ _ name _ _= _ _ main _ _ :src=cv2。我在读(’555。png )#默认彩色读入cv2.imshow(original_image ,src) #显示图像t1=cv2。GetTickcount()# GetTickcount函数返回从操作系统启动到当前所经过的毫秒数存取像素(src)T2=cv2。gettickcount()时间=(T2-t1)/cv2。gettick频率()# gettick频率函数返回中央处理器的频率,就是每秒的计时周期数print( time:% s ms %(time * 1000))#输出运行时间cv2。waitkey(0)cv2。destroyallwindows()
测试如何高效遍历像素我本来想如何加速opencv-python的遍历像素效率,唯一能够稍微加快的方式是:先遍历小的数据范围,然后遍历大的数据范围。这样才能使遍历的速度有所加快。也就是说以下两种方式效果一样。
通过下述代码发现,最好不要通过遍历像素来操作图像,我们可以用数组的矩阵运算。
若是C代码,可以使用C语言的指针来遍历,通过指针操作像素的地址来操作对应数字会大大加速运算。
将cv2导入时间导入数量作为NP #遍历依次为通道,高,宽def逆(图像):高度=图像。shape[0]width=图像。shape[1]通道=图像。shape[2]pixel _ data=NP。数组(image,dtype=NP。uint 8)for c in range(channels):for row in range(height):for col in range(width):level=pixel _ data[row,col,c] pixel_data[row,col,c]=255级返回pixel _ datadef逆2(image):height,width=image。shape[:2]通道=图像。c]=255级返回image if _ _ name _ _= _ _ main _ _ :img path=r c:\ Users \ xxxx \ Desktop \ 201920100013253001 _ 30302 _ 01。jpg image=cv2。imread(img路径)print(图像。形状)打印(图像。size)开始1=时间。time()image1=逆(像)end 1=时间。time()start 2=时间。二、非赋值修改像素def get_积极的薯片_表格(阈值=140): #二值化图片(非函数,直接操作像素,简便快速)table=[]for I in range(256):if I threshold:table。追加(0)else:table。追加(1)返回表去除二值化后孤立点
def sum_9_region(img,x,y):":param x:param y:return:" # all cur _ pixel=img。getpixel((x,y))#=width=img。宽度高度=img。高度if cur _ pixel==1:#返回0 if y==0:# if x==0:# sum=cur _ pixel \ img。getpixel((x,y 1 img.getpixel((x,y 1)) \ img.getpixel((x - 1,y)) \ img.getpixel((x - 1,y 1))return 4-sum else:# sum=img。getpixel((x-1,y)) \ img.getpixel((x - 1,y 1)) \ cur_pixel \ img.getpixel((x,y)) \ img.getpixel((x 1,y))return 6-sum elif y y-1))\ img . get pixel((x,y-1))return 4-sum elif x=width-1:# sum=cur _ pixel \ img。getpixel((x,y - 1)) \ img.getpixel((x - 1,y - 1)) \ img.getpixel((x - 1,y-1))return 4-sum:# sum=cur _ pixel \ img。getpixel((x-1,y)) \ img.getpixel((x 1,y)) \ img.getpixel y-1))返回6-sum else:# if x==0:# sum=img。getpixel((x,y-1))\ cur _ pixel \ img。getpixel((x,y - 1)) \ img.getpixel((x 1,y - 1)) \ img。getpixel((x1,y)) \ img.getpixel((x 1,y 1))return 6-sum elif x==width-1:# print(% s,%s % (x,y img.getpixel((x - 1,y)) \ img.getpixel((x - 1,y-1))return 6-sum else:# sum=img。getpixel((x-1,y - 1)) \ img.getpixel((x - 1,y - 1)) \ img.getpixel((x,y-1))\ cur _ pixel \ img。getpixel((x,y-1))\ img。getpixel(x1,y-1))\ img。图片
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。