Introduction
Introduction Statistics Contact Development Disclaimer Help
t256 color palette works, but is too slow - cross-stitch - interactively turn i…
git clone git://src.adamsgaard.dk/cross-stitch
Log
Files
Refs
LICENSE
---
commit 35a43e65034c9ad4fbd06132c518970b3cac7c2a
parent 503df807a1d7659850deca687081e91fb672272e
Author: Anders Damsgaard <[email protected]>
Date: Sat, 15 Feb 2014 21:31:49 +0100
256 color palette works, but is too slow
Diffstat:
M cross-stitch.py | 35 +++++++++++++++++++----------…
1 file changed, 22 insertions(+), 13 deletions(-)
---
diff --git a/cross-stitch.py b/cross-stitch.py
t@@ -18,11 +18,12 @@ class Palette:
def __init__(self, type='256colors'):
if type == '256colors':
self.rgblist = numpy.loadtxt('./256-color-rgb.dat')
+ print(self.rgblist.shape)
def nearest256color(self, rgbval):
ibest = -1
- min_misfit2 = float(inf)
- for i in range(self.rgblist):
+ min_misfit2 = float('inf')
+ for i in range(256):
palettecolor = self.rgblist[i]
misfit2 = (rgbval[0] - float(palettecolor[0]))**2 + \
(rgbval[1] - float(palettecolor[1]))**2 + \
t@@ -30,8 +31,8 @@ class Palette:
if misfit2 < min_misfit2:
ibest = i
min_misfit2 = misfit2
- return numpy.array((palettecolor[ibest,0], palettecolor[ibest,1],
- palettecolor[ibest,2]))
+ return numpy.array((self.rgblist[ibest,0], self.rgblist[ibest,1],
+ self.rgblist[ibest,2]))
class CrossStitch:
t@@ -62,6 +63,14 @@ class CrossStitch:
tmp[scipy.r_[scipy.where(vecs == i)],:] = color
self.img = tmp.reshape(self.img.shape[0], self.img.shape[1], 3)
+ def convert_256_colors(self):
+ palette = Palette('256colors')
+ tmp = self.img.reshape(scipy.product(self.img.shape[:2]),\
+ self.img.shape[2])
+ for i in range(tmp.size):
+ tmp[i] = palette.nearest256color(tmp[i])
+ self.img = tmp.reshape(self.img.shape[0], self.img.shape[1], 3)
+
def save_image(self, filename, grid=True):
fig = matplotlib.pyplot.figure()
imgplot = matplotlib.pyplot.imshow(self.img, interpolation='nearest')
t@@ -72,15 +81,6 @@ class CrossStitch:
return self.img
-def ask(parent=None, message=''):
- app = wx.App()
- dlg = wx.TextEntryDialog(parent, message)
- dlg.ShowModal()
- result = dlg.GetValue()
- dlg.Destroy()
- app.MainLoop()
- return result
-
class MainScreen(wx.Frame):
def __init__(self, *args, **kwargs):
t@@ -122,6 +122,10 @@ class MainScreen(wx.Frame):
fitem = processingMenu.Append(wx.ID_ANY, 'Reduce number of colors',
'Reduce number of colors in image')
self.Bind(wx.EVT_MENU, self.OnLimitColors, fitem)
+ fitem = processingMenu.Append(wx.ID_ANY,\
+ 'Reduce to standard 256 colors',\
+ 'Reduce number of colors in image to the standard 256 colors')
+ self.Bind(wx.EVT_MENU, self.On256Colors, fitem)
menubar.Append(processingMenu, '&Image processing')
viewMenu = wx.Menu()
t@@ -223,6 +227,11 @@ class MainScreen(wx.Frame):
self.contentNotSaved = True
self.DrawPreview()
+ def On256Colors(self, event):
+ self.cs.convert_256_colors()
+ self.contentNotSaved = True
+ self.DrawPreview()
+
def ToggleGrid(self, event):
if self.gridtoggle.IsChecked():
self.grid = True
You are viewing proxied material from mx1.adamsgaard.dk. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.