[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [29852] branches/soc-2010-leifandersen/ tests/render/run.py: 1.
Leif Andersen
leif.a.andersen at gmail.com
Thu Jul 1 21:02:03 CEST 2010
Revision: 29852
http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=29852
Author: leifandersen
Date: 2010-07-01 21:02:03 +0200 (Thu, 01 Jul 2010)
Log Message:
-----------
1. Changed the algorithm so that it compares things pixel by pixel, rather than as a lumpsum, I THINK it's better. (Doing some research about it now).
2. A few more UI tweeks: A diff of the image is now shown.
Modified Paths:
--------------
branches/soc-2010-leifandersen/tests/render/run.py
Modified: branches/soc-2010-leifandersen/tests/render/run.py
===================================================================
--- branches/soc-2010-leifandersen/tests/render/run.py 2010-07-01 16:17:57 UTC (rev 29851)
+++ branches/soc-2010-leifandersen/tests/render/run.py 2010-07-01 19:02:03 UTC (rev 29852)
@@ -1,4 +1,6 @@
import Image
+import ImageChops
+
import unittest
import os
import sys
@@ -19,47 +21,24 @@
im1 = None
im2 = None
-
+ diff = None
+
def setUp(self):
image_path1 = os.path.join(sys.path[0], 'render', string.replace(filename,'.blend', '.png'))
image_path2 = os.path.join(sys.path[0], 'output', string.replace(filename, '.blend', '_0001.png'))
self.im1 = Image.open(image_path1)
self.im2 = Image.open(image_path2)
+ self.diff = ImageChops.difference(self.im1, self.im2)
+ self.diff.save(os.path.join(sys.path[0], 'output', string.replace(filename, '.blend', '_diff.png')) , "PNG")
- def test_red(self):
- im1_red = im2_red = 0
- self.assertEquals(self.im1.size, self.im2.size)
- for i in range(0, self.im1.size[0]):
- for j in range(0, self.im1.size[1]):
- im1_red+=self.im1.getpixel((i,j))[0]
- im2_red+=self.im2.getpixel((i,j))[0]
- im_red = abs(im1_red-im2_red)
- if im_red > 1000:
- self.fail("Red band is too different")
+ def test_diff(self):
+ bad_pixels = 0
+ for num in self.diff.histogram():
+ if num > 100:
+ bad_pixels+=1
+ if bad_pixels > len(self.diff.histogram())/10:
+ self.fail("Images are too different: " + str(bad_pixels))
- def test_green(self):
- im1_green = im2_green = 0
- self.assertEquals(self.im1.size, self.im2.size)
- for i in range(0, self.im1.size[0]):
- for j in range(0, self.im1.size[1]):
- im1_green+=self.im1.getpixel((i,j))[1]
- im2_green+=self.im2.getpixel((i,j))[1]
- im_green = abs(im1_green-im2_green)
- if im_green > 1000:
- self.fail("Green band is too different")
-
- def test_blue(self):
- im1_blue = im2_blue = 0
- self.assertEquals(self.im1.size, self.im2.size)
- for i in range(0, self.im1.size[0]):
- for j in range(0, self.im1.size[1]):
- im1_blue+=self.im1.getpixel((i,j))[2]
- im2_blue+=self.im2.getpixel((i,j))[2]
- im_blue = abs(im1_blue-im2_blue)
- if im_blue > 1000:
- self.fail("Blue band is too different")
-
-
class TestImageOperator(unittest.TestCase):
def setUp(self):
pass
@@ -122,6 +101,7 @@
file.write('<th>Filename</th>\n')
file.write('<th>Good Image</th>\n')
file.write('<th>Latest Render</th>\n')
+ file.write('<th>Diff</th>\n')
file.write('<th>Match?</th>\n')
file.write('</tr>\n')
@@ -138,6 +118,7 @@
file.write('<td>' + filename + '</td>\n')
file.write('<td><img src="' + os.path.join('render', string.replace(filename, '.blend', '.png')) + '" alt="Good Image" width="200" height="150"></td>\n')
file.write('<td><img src="' + os.path.join('output', string.replace(filename, '.blend', '_0001.png')) + '" alt="Latest Render" width="200" height="150"></td>\n')
+ file.write('<td><img src="' + os.path.join('output', string.replace(filename, '.blend', '_diff.png')) + '" alt="Image Diff" width="200" height="150"></td>\n')
if tr.wasSuccessful():
passed.append(filename)
file.write('<td><font color="ooffoo">OK</font></td>\n')
More information about the Bf-blender-cvs
mailing list