Mar*_*nne 15 python python-imaging-library
我正在玩PIL并遇到了这个问题,我无法看到文档在哪里我出错了.这是我的简单代码
from PIL import Image
from PIL.ImageChops import difference
imageA = Image.open("image1.png")
imageB = Image.open("image2.png")
if imageA.size == imageB.size:
diff = difference(imageA, imageB)
diff.save("test.png")
Run Code Online (Sandbox Code Playgroud)
这给了我错误
Traceback (most recent call last):
File "C:\[XXX]\box-test.py", line 8, in <module>
diff = difference(imageA, imageB)
File "C:\Python32\lib\site-packages\PIL\ImageChops.py", line 123, in difference
return image1._new(image1.im.chop_difference(image2.im))
ValueError: images do not match
Run Code Online (Sandbox Code Playgroud)
任何帮助,将不胜感激
mmg*_*mgp 25
该功能的文档实际上并没有多少说明.所以让我试着澄清一下.首先,图像的大小与功能是否有效无关,它在内部检查两个图像适合的大小.
现在,你什么时候可以通过使用函数来比较图像ImageChops.difference?
首先,两个图像必须具有可以存储在无符号字节中的像素.这是一种非常常见的图像类型,但这排除了图像之间的比较,即使它们是相同的模式.所以,你不能比较的图像x和y当一个或/他们两个/有一个模式:F,I,I;16,I;16L,I;16B,BGR;15,BGR;16,BGR;24,或BGR;32.只是说清楚:如果两个图像碰巧处于上述模式之一,如果两个图像处于相同模式并不重要,则该功能将拒绝工作.
所以,当图像在模式的比较可以做到1,P,L,LA,RGB,RGBA,RGBX,RGBa,CMYK,或YCbCr只要它们具有相同的band数.这意味着图像不必具有相同的模式进行比较.例如,difference(x.convert('CMYK'), x.convert('RGBA'))或difference(x.convert('1'), x.convert('P'))工作得很好.当然这意味着difference(x.convert('LA'), x.convert('L'))失败.最后,生成的图像将始终具有与传递给函数的第一个图像相同的模式.
这至少对PIL 1.1.7有效.
| 归档时间: |
|
| 查看次数: |
19617 次 |
| 最近记录: |