| 173 | } |
| 174 | |
| 175 | py::array AsNumpyAccessor(Image& img, bool writeable) |
| 176 | { |
| 177 | auto holder = std::make_unique<ImageAccessorHolder>(); |
| 178 | |
| 179 | { |
| 180 | py::gil_scoped_release release; |
| 181 | |
| 182 | if (writeable) |
| 183 | holder->write = std::make_unique<ImageWriteAccessor>(&img); |
| 184 | else |
| 185 | holder->read = std::make_unique<ImageReadAccessor>(&img); |
| 186 | } |
| 187 | |
| 188 | const void* data = writeable |
| 189 | ? holder->GetMutableData() |
| 190 | : holder->GetData(); |
| 191 | |
| 192 | if (data == nullptr) |
| 193 | mitkThrow() << "Could not access image data"; |
| 194 | |
| 195 | auto capsule = py::capsule(holder.release(), "mitk.ImageAccessor", &DeleteImageAccessorCapsule); |
| 196 | |
| 197 | return BuildNumpyArray(img, data, writeable, std::move(capsule)); |
| 198 | } |
| 199 | |
| 200 | // --------------------------------------------------------------------------- |
| 201 | // from_numpy (WP-2) |
no test coverage detected