|
LSSTApplications
1.1.2+25,10.0+13,10.0+132,10.0+133,10.0+224,10.0+41,10.0+8,10.0-1-g0f53050+14,10.0-1-g4b7b172+19,10.0-1-g61a5bae+98,10.0-1-g7408a83+3,10.0-1-gc1e0f5a+19,10.0-1-gdb4482e+14,10.0-11-g3947115+2,10.0-12-g8719d8b+2,10.0-15-ga3f480f+1,10.0-2-g4f67435,10.0-2-gcb4bc6c+26,10.0-28-gf7f57a9+1,10.0-3-g1bbe32c+14,10.0-3-g5b46d21,10.0-4-g027f45f+5,10.0-4-g86f66b5+2,10.0-4-gc4fccf3+24,10.0-40-g4349866+2,10.0-5-g766159b,10.0-5-gca2295e+25,10.0-6-g462a451+1
LSSTDataManagementBasePackage
|
You can use the C++ APIs to manipulate images and bits of images from python, e.g.
sets a 4x10 portion of image im to 100 (I used im.Factory to avoid repeating afwImage.ImageF, rendering the code non-generic). I can't simply say sim = 100 as that'd make sim an integer rather than setting the pixel values to 100. I used an Image, but a Mask or a MaskedImage would work too (and I can create a sub-Exposure, although I can't assign to it).
This syntax gets boring fast.
We accordingly added some syntactic sugar at the swig level. I can write the preceeding example as:
i.e. create a subimage and assign to it. afw's image slices are always shallow (but you can clone them as we shall see).
Note that the order is [x, y]**. This is consistent with our C++ code (e.g. it's PointI(x, y)), but different from numpy's matrix-like [row, column].
This opens up various possiblities; the following all work:
You might expect to be able to say print im[0,20] but you won't get what you expect (it's an image, not a pixel value); say print float(im[0,20]) instead.
The one remaining thing that you can't do it make a deep copy (the left-hand-side has to pre-exist), but fortunately
works.
You will remember that the previous section used [x, y] whereas numpy uses [row, column] which is different; you have been warned.
You can achieve similar effects using numpy. For example, after creating im as above, I can use getArray to return a view of the image (i.e. the numpy object shares memory with the C++ object), so:
will also set a sub-image's value (but a different sub-image from im[1:5, 2:8]). You can do more complex operations using numpy syntax, e.g.
which is very convenient, although there's a good chance that you'll be creating temporaries the size of im.
1.8.5