@Override public double get(long i, long j, long k) { return get(i * strides[0] + j * strides[1] + k); } @Override public double get(long... indices) {
@Override public DoubleIndexer put(long i, long j, double d) { put(i * strides[0] + j, d); return this; } @Override public DoubleIndexer put(long i, long j, double[] d, int offset, int length) {
@Override public double get(long i) { return RAW.getDouble(base + checkIndex(i, size) * VALUE_BYTES); } @Override public DoubleIndexer get(long i, double[] d, int offset, int length) {
/** * Creates a double indexer to access efficiently the data of a pointer. * * @param pointer data to access via a buffer or to copy to an array * @param direct {@code true} to use a direct buffer, see {@link Indexer} for details * @return the new double indexer backed by the raw memory interface, a buffer, or an array */ public static DoubleIndexer create(final DoublePointer pointer, long[] sizes, long[] strides, boolean direct) { if (direct) { return Raw.getInstance() != null ? new DoubleRawIndexer(pointer, sizes, strides) : new DoubleBufferIndexer(pointer.asBuffer(), sizes, strides); } else { final long position = pointer.position(); double[] array = new double[(int)Math.min(pointer.limit() - position, Integer.MAX_VALUE)]; pointer.get(array); return new DoubleArrayIndexer(array, sizes, strides) { @Override public void release() { pointer.position(position).put(array); super.release(); } }; } }
@Override public DoubleIndexer put(long i, double d) { RAW.putDouble(base + checkIndex(i, size) * VALUE_BYTES, d); return this; } @Override public DoubleIndexer put(long i, double[] d, int offset, int length) {
@Override public DoubleIndexer get(long i, double[] d, int offset, int length) { for (int n = 0; n < length; n++) { d[offset + n] = get(i * strides[0] + n); } return this; } @Override public double get(long i, long j) {
@Override public DoubleIndexer put(long i, double[] d, int offset, int length) { for (int n = 0; n < length; n++) { put(i * strides[0] + n, d[offset + n]); } return this; } @Override public DoubleIndexer put(long i, long j, double d) {
@Override public DoubleIndexer get(long i, long j, double[] d, int offset, int length) { for (int n = 0; n < length; n++) { d[offset + n] = get(i * strides[0] + j * strides[1] + n); } return this; } @Override public double get(long i, long j, long k) {
@Override public DoubleIndexer put(long i, long j, double[] d, int offset, int length) { for (int n = 0; n < length; n++) { put(i * strides[0] + j * strides[1] + n, d[offset + n]); } return this; } @Override public DoubleIndexer put(long i, long j, long k, double d) {
@Override public double get(long i, long j) { return get(i * strides[0] + j); } @Override public DoubleIndexer get(long i, long j, double[] d, int offset, int length) {
@Override public DoubleIndexer put(long i, long j, long k, double d) { put(i * strides[0] + j * strides[1] + k, d); return this; } @Override public DoubleIndexer put(long[] indices, double d) {
boof.fx = indexerK.get(0,0); boof.skew = indexerK.get(0,1); boof.fy = indexerK.get(1,1); boof.cx = indexerK.get(0,2); boof.cy = indexerK.get(1,2); boof.setRadial(indexerD.get(0,0),indexerD.get(1,0),indexerD.get(4,0)); else if( distortion.rows() >= 2 ) boof.setRadial(indexerD.get(0,0),indexerD.get(1,0)); if( distortion.rows() >= 5 ) boof.fsetTangental(indexerD.get(2,0),indexerD.get(3,0));
public static Mat toMat(DMatrixRMaj in ) { Mat out = new Mat(in.numRows,in.numCols,CV_64F); DoubleRawIndexer indexer = out.createIndexer(); for (int i = 0; i < in.numRows; i++) { for (int j = 0; j < in.numCols; j++) { indexer.put(i,j, in.get(i,j)); } } return out; }