-
Notifications
You must be signed in to change notification settings - Fork 1
/
pointDigitizerLabel.jy
50 lines (41 loc) · 1.43 KB
/
pointDigitizerLabel.jy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
setScriptTitle( 'color name lookup' )
setScriptDescription( 'experiment with looking up the string names of each color in an image.' )
import jarray
img= getDataSet(PWD+'media/SFFOR113-1_medium.jpg')
from org.das2.qds import DataSetUtil,SemanticOps
dims= DataSetUtil.qubeDims(img)
plot( img )
from org.das2.util import ColorUtil
colors= ColorUtil.getNamedColors()
hue= dblarr(colors.size())
sat= dblarr(colors.size())
val= dblarr(colors.size())
nam= strarr(colors.size())
hsb= jarray.zeros(3,'f')
i=0
for cn in colors.entrySet():
c= cn.value
Color.RGBtoHSB( c.red, c.green, c.blue, hsb )
nam[i]= cn.key
hue[i]= hsb[0]
sat[i]= hsb[1]
val[i]= hsb[2]
i=i+1
def closest(color):
Color.RGBtoHSB( color.red, color.green, color.blue, hsb )
dist= sqrt( (hue-hsb[0])**2 + (sat-hsb[1])**2 + (val-hsb[2])**2 )
im= imin( dist )
return nam[im]
from org.das2.event import LabelDragRenderer
class ColorLabelDragRenderer( LabelDragRenderer ):
def renderDrag( self, g2, p1, p2 ):
p= self.getParent()
datax= p.XAxis.invTransform(p2.x)
datay= p.YAxis.invTransform(p2.y)
cc= img[ int(datax), int(datay) ]
cc= rgbColorDataset( cc[0], cc[1], cc[2] )
cc= Color( int(cc) )
self.setLabel( str(closest( cc )) )
LabelDragRenderer.renderDrag( self, g2, p1, p2 )
mm= addMouseModule( dom.plots[0], 'colorAt', None )
mm.dragRenderer= ColorLabelDragRenderer(None)