操作数组的方法,js数组的操作方法

  操作数组的方法,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。图片

操作数组的方法,js数组的操作方法