如今,首席CTO指出要与您分享多少像素的Python计算图像。其中,将详细介绍带有Python提取的像素的数量。
本文目录清单:
1.使用Python PIL来处理图片。如何获取图片的像素数据?2。类似的图片检测:哈希算法的划线的Python实现3.图像和Python实现的双重三个插值算法的原理4.如何输出python的每个点的像素值?5。Python PIL使用图像模块更直接地计数图像模块。您可以使用get像素来获取像素值。给你一个例子。
01。#!/usr/bin/env Python
02. Import图像
03. Import Sys
04.im = image.open(sys.argv [1])
05. width = im.size [0]
06.Height = im.size [1]
07.Print“/ *宽度:%d */”%(宽度)
08.Print“/ *高度:%d */”%(高度)
09.Count = 0
10.对于H范围(0,高度):
11.对于w范围(0,宽度):
12.像素= im.getPixel(((w,h))
13.对于I范围(0,3):
14.计数=(计数+1)%16
15. if(count == 0):
16.打印“ 0x%02X,/n”%(pixel [i]),
17.其他:
18.打印“ 0x%02X”,%(pixel [i]),
在某些情况下,我们需要检测图片和流程之间的相似之处:删除相同的图片,标签盗版等。
如何判断同一图片?最简单的方法是判断使用加密哈希的使用(例如MD5,SHA-1)。但是限制很大。例如,一个TXT文档,其MD5值是根据该值计算的此TXT的二进制数据。如果它是此TXT文档的完整复制版本,则它们的MD5值完全相同。但是,一旦更改了副本的内容,即使仅是副本的凹痕格式,它的MD5也会有所不同。因此,,加密哈希只能用于确定两个完全一致和未修改的文件。如果是颜色调制或缩放的图片,则无法确定它是否与另一张图片是同一图片。
因此,如何判断PS的图片是否与另一张图片相同?简单而简单的解决方案是使用感知哈希算法。
执行哈希算法是一种类型的算法的一般名称,包括ahash,phash,dhash。“相似性”是否是相对判断。
如果我们要计算上图中的dhash值,第一步是将其简化成足够小的。为什么需要缩放?完整的40,000像素。每个像素都保留为RGB值和40,000 RGB,这是大量信息。因此,需要处理很多细节。因此,我们需要将图片放大到很小的情况下,隐藏其细节,并查看森林,没有树木。建议在9*8时放大。尽管可以将其缩放到任何大小中,但此值相对合理。宽度为9,这对我们转换为哈希值很有帮助。在下面看,您了解。
(感谢评论区域隔壁的小黑人同学,建议添加image.antialias参数到image..resize。此外,此参数将执行高质量的重新启动过滤所有可能影响输出的输入像素像素))
DHASH全名是价值的差异,并且计算相邻像素之间的色彩差异。我们的Zoom的细节已被隐藏,信息的量变得更少。但这还不够,因为它是多彩的,由RGB组成value.white由(255,255,255)表示,而黑色表示(0,0,0)。值越大,颜色越亮,颜色越小,颜色由3个值组成,即红色,绿色和蓝色的值。如果直接使用RGB值的颜色强度,则非常复杂,因此,我们将其转换为灰色值 - 仅整数0至255代表灰色。在这种情况下,将三维比较的比较简化为一个维度比较。
差异是通过计算相邻像素的每一行的强度来获得的。我们的图片是9*8的分辨率,然后有8行,每行9个像素。差异是分别计算的每条线,即第一个像素,即第一个像素第二行的第二行将与第一行中的任何像素进行比较。EAD线有9个像素,然后将生成8个不同的值。这就是为什么我们选择9作为宽度的原因,因为8bit可以形成一个字节,这很方便转换为十六进制值。
如果先前像素的颜色强度大于第二像素,则差异设置为true(即1)。如果它不大于第二像素,则将其设置为false(即0)。
我们将阵列差异差异的每个值视为一点。每个8位组合物作为十六进制值,并且将十六进制值转换为字符串,并获得了最终的DHASH值。
汉明的概念不仅用于图片比较领域,而且在许多领域。有关特定介绍,请参阅Wikipedia。
Hanying距离表示将A修改为B中需要多少个步骤。
Dhash中的Hanyu距离是计算差异的修改摘要。我们的差异由0和1表示,可以被视为二进制。二进制0110和1111之间的距离为2。
我们将两张图片的Dhash值转换为二进制衍射,并将其不同。计算或结果的“ 1”数量,即不同的数字,这是Hanying的距离。
如果传递的参数不是这两个图片的Dhash值,而是直接比较两张图片,那么您不需要生成Dhash值。使用步骤3中的差异数组来计算统计差异。
一般而言,汉尼的距离小于5,这基本上是相同的图片。您可以根据他们的实际情况来判断山丘是如何成为山地的关键价值。
1.图像的双重三个插值算法的原理:
假设源图像A的大小为m*n,并且缩放后目标图像B的大小为m*n。作为a(x,y)= a(x*(m/m),y*(n/n))。在双线性插值方法中,我们选择了a(x,y).in的最后四个点。双立方体插值方法,我们在计算目标图像b(x,y)处选择最新的16个像素作为像素值的参数。如图所示:
如图所示,点p是对应于(x,y)对应于源图像处的源图像的位置。P的坐标位置将出现。),x,y代表整数部分,u和v分别表示十进制部分。(i,j)(i,j = 0,1,2,2,3)在这里。
双立方体的目的是找到一种关系或系数,可以找出这16个像素对P像素值的影响因子,以便根据此影响获得目标图像的相应点的像素值实现成像缩水目的的因素。
双音调基本函数表格如下:
2. Python实现双三个插值算法
从PIL导入图像
导入numpy作为NP
导入数学
#生成16个具有不同权重的像素
DEF BIBUBIC(X):
x = abs(x)
如果x = 1:
返回1-2*(x ** 2)+(x ** 3)
Elif X2:
返回4-8*x+5*(x ** 2) - (x ** 3)
别的:
返回0
#双三 - 时间插值算法
#dsth是目标图像的高度,dstw是目标图像的宽度
DEF BICUBIC_INTERPOLATION(IMG,DSTH,DSTW):
scrh,scrw,_ = img.shape
#img = np.pad(img,(1,3),(1,3),(0,0)),'常数')
retimg = np.zeros((DSTH,DSTW,3),dtype = np.uint8)
对于我的范围(DSTH):
对于J范围(DSTW):
SCRX = I*(SCRH/DSTH)
scry = j*(scrw/dstw)
X = Math.floor(SCRX)
Y = Math.floor(scry)
U = SCRX-X
v = scry-y
TMP = 0
对于II范围(-1,2):
对于JJ(-1,2)的JJ:
如果X+II0或Y+JJ0或X+II = SCRH或Y+JJ = SCRW:
继续
tmp+= img [x+ii,y+jj]*bibubic(ii-u)*bibubic(jj-v)
retimg [i,j] = np.clip(TMP,0,255)
返回retimg
im_path ='https://www.shouxicto.com/paojie.jpg'
image = np.array(image.open(im_path)))
image2 = bicubic_interpolation(image,image.shape [0]*2,图像。
image2 = image.fromarray(image2.astype('uint8')。convert('rgb')
image2.save('bicubic_interpolation.jpg')
3.实验结果:
4.参考内容:
我使用pil库,也可以使用openCV库来x0dx0aflom pil导入impactx0aimg = image.open(“ demo.jpg”)x0dx0aimg_array = img.load = img.load()x0dx0a,然后通过img_array [x,y]读取Pixel。值得x0dx0a查看图片大小,或者您可以通过img_array [x,y] =(11,22,33)设置RGB像素值
您可以在一个过程中创建很多东西,并且完全彼此隔离。这大大简化了并发和错误中的问题。说再见,因为输入python解释器序列化,如果有错误,很难可靠地恢复!
结论:以上是首席CTO注释为每个人编写的Python计算图像的全部内容。感谢您阅读本网站的内容。我希望这对您有帮助。计算图像像素的相关内容。不要忘记在此网站上找到它。