[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