Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 获取图像的所有像素[魔杖]_Python 3.x_Wand - Fatal编程技术网

Python 3.x 获取图像的所有像素[魔杖]

Python 3.x 获取图像的所有像素[魔杖],python-3.x,wand,Python 3.x,Wand,我正在使用,并试图解决,我当前的问题要求我获得所有偶数/奇数像素 显然,这是一项非常简单的任务。然而,我发现魔杖库在加载像素/复制像素方面相当慢(可能是因为我还将填充颜色更改为每个像素的颜色?),我想知道是否可以一次加载所有像素 我当前加载所有像素的解决方案如下: from wand.image import Image img = Image(filename="5808.jpg") pixels = [] for x in range(img.width+1): for y in r

我正在使用,并试图解决,我当前的问题要求我获得所有偶数/奇数像素

显然,这是一项非常简单的任务。然而,我发现魔杖库在加载像素/复制像素方面相当慢(可能是因为我还将填充颜色更改为每个像素的颜色?),我想知道是否可以一次加载所有像素

我当前加载所有像素的解决方案如下:

from wand.image import Image
img = Image(filename="5808.jpg")
pixels = []
for x in range(img.width+1):
    for y in range(img.height+1):
        pixels.append(img[x, y])

print(pixels)
from wand.image import Image
img = Image(filename="5808.jpg")
print(img.pixels)
我更喜欢这样的:

from wand.image import Image
img = Image(filename="5808.jpg")
pixels = []
for x in range(img.width+1):
    for y in range(img.height+1):
        pixels.append(img[x, y])

print(pixels)
from wand.image import Image
img = Image(filename="5808.jpg")
print(img.pixels)

有类似的吗?提前感谢。

不必阅读Python挑战,只需关注问题

我更喜欢这样:
img.pixels

迭代图像大小以收集
wand.color.color
对象会很慢,因为这会重复使用MagickWand的内部像素迭代和像素结构。正如前面所说的挑战是针对Python的,而不是针对C缓冲区,我建议只获取一次像素数据缓冲区。之后,您可以自由地迭代、比较、评估等,而无需ImageMagick资源

对于本例,我假设图像是下面的2x2 PNG(缩放以获得可见性)

从wand.image导入图像
#原型局部变量
像素=[]
宽度,高度=0,0
blob=无
#加载图像
将图像(filename='2x2.png')作为图像:
#强制像素数量介于0和255之间
image.depth=8
#保存宽度和高度供以后使用
宽度,高度=image.width,image.height
#将原始图像数据复制到blob字符串中
blob=image.make_blob(format='RGB')
#迭代blob并收集像素
对于范围(0,宽度*高度*3,3)内的光标:
#保存颜色值的元组
像素。追加((斑点[光标],#红色
水滴[光标+1],#绿色
水滴[光标+2])#蓝色
打印(像素)
#=> [(255, 0, 0), (0, 0, 255), (0, 128, 0), (255, 255, 255)]
这个例子很快,但请记住Python很好地处理对象。让我们扩展
Image
对象,并创建满足
img.pixels
的方法

#让我们创建一个通用像素类,以便于颜色管理
类MyPixel(对象):
红色=0
绿色=0
蓝色=0
def __;初始(自身,红色=0,绿色=0,蓝色=0):
self.red=红色
self.green=绿色
self.blue=蓝色
定义报告(自我):
返回u'{0.red:02X}{0.green:02X}{0.blue:02X}'。格式(self)
#扩展wand.image.image并添加新的'img.pixels'伪属性
类MyImage(图像):
#重复上面的例子
@财产
def像素(自身):
像素=[]
self.depth=8
blob=self.make_blob(format='RGB')
对于范围(0,self.width*self.height*3,3)内的光标:
像素=我的像素(红色=水滴[光标],
绿色=水滴[光标+1],
蓝色=水滴[光标+2])
像素。追加(像素)
返回像素
#调用自定义类;它收集您的自定义像素
使用MyImage(文件名=文件名)作为img:
打印(图像像素)
#=>[#FF0000,#0000FF,#008000,#FFFFFF]

没有尝试阅读Python挑战,只关注问题

我更喜欢这样:
img.pixels

迭代图像大小以收集
wand.color.color
对象会很慢,因为这会重复使用MagickWand的内部像素迭代和像素结构。正如前面所说的挑战是针对Python的,而不是针对C缓冲区,我建议只获取一次像素数据缓冲区。之后,您可以自由地迭代、比较、评估等,而无需ImageMagick资源

对于本例,我假设图像是下面的2x2 PNG(缩放以获得可见性)

从wand.image导入图像
#原型局部变量
像素=[]
宽度,高度=0,0
blob=无
#加载图像
将图像(filename='2x2.png')作为图像:
#强制像素数量介于0和255之间
image.depth=8
#保存宽度和高度供以后使用
宽度,高度=image.width,image.height
#将原始图像数据复制到blob字符串中
blob=image.make_blob(format='RGB')
#迭代blob并收集像素
对于范围(0,宽度*高度*3,3)内的光标:
#保存颜色值的元组
像素。追加((斑点[光标],#红色
水滴[光标+1],#绿色
水滴[光标+2])#蓝色
打印(像素)
#=> [(255, 0, 0), (0, 0, 255), (0, 128, 0), (255, 255, 255)]
这个例子很快,但请记住Python很好地处理对象。让我们扩展
Image
对象,并创建满足
img.pixels
的方法

#让我们创建一个通用像素类,以便于颜色管理
类MyPixel(对象):
红色=0
绿色=0
蓝色=0
def __;初始(自身,红色=0,绿色=0,蓝色=0):
self.red=红色
self.green=绿色
self.blue=蓝色
定义报告(自我):
返回u'{0.red:02X}{0.green:02X}{0.blue:02X}'。格式(self)
#扩展wand.image.image并添加新的'img.pixels'伪属性
类MyImage(图像):
#重复上面的例子
@财产
def像素(自身):
像素=[]
self.depth=8
blob=self.make_blob(format='RGB')
对于范围(0,self.width*self.height*3,3)内的光标:
像素=我的像素(红色=水滴[光标],
绿色=水滴[光标+1],
蓝色=水滴[光标+2])
像素。追加(像素)
返回像素
#调用自定义类;它收集您的自定义像素
使用MyImage(文件名=文件名)作为img:
打印(图像像素)
#=>[#FF0000,#0000FF,#008000,#FFFFFF]

谢谢您的帮助。若我发现自己在用魔杖,我会用这个,但我已经设法让枕头工作了。(我使用魔杖的唯一原因是枕头不可用。)谢谢你的帮助。如果我能找到我的