forked from opencv/opencv
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request opencv#7947 from utibenkei:tracking-module-java
- Loading branch information
Showing
6 changed files
with
239 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,81 @@ | ||
package org.opencv.core; | ||
|
||
import java.util.Arrays; | ||
import java.util.List; | ||
|
||
|
||
public class MatOfRect2d extends Mat { | ||
// 64FC4 | ||
private static final int _depth = CvType.CV_64F; | ||
private static final int _channels = 4; | ||
|
||
public MatOfRect2d() { | ||
super(); | ||
} | ||
|
||
protected MatOfRect2d(long addr) { | ||
super(addr); | ||
if( !empty() && checkVector(_channels, _depth) < 0 ) | ||
throw new IllegalArgumentException("Incompatible Mat"); | ||
//FIXME: do we need release() here? | ||
} | ||
|
||
public static MatOfRect2d fromNativeAddr(long addr) { | ||
return new MatOfRect2d(addr); | ||
} | ||
|
||
public MatOfRect2d(Mat m) { | ||
super(m, Range.all()); | ||
if( !empty() && checkVector(_channels, _depth) < 0 ) | ||
throw new IllegalArgumentException("Incompatible Mat"); | ||
//FIXME: do we need release() here? | ||
} | ||
|
||
public MatOfRect2d(Rect2d...a) { | ||
super(); | ||
fromArray(a); | ||
} | ||
|
||
public void alloc(int elemNumber) { | ||
if(elemNumber>0) | ||
super.create(elemNumber, 1, CvType.makeType(_depth, _channels)); | ||
} | ||
|
||
public void fromArray(Rect2d...a) { | ||
if(a==null || a.length==0) | ||
return; | ||
int num = a.length; | ||
alloc(num); | ||
double buff[] = new double[num * _channels]; | ||
for(int i=0; i<num; i++) { | ||
Rect2d r = a[i]; | ||
buff[_channels*i+0] = (double) r.x; | ||
buff[_channels*i+1] = (double) r.y; | ||
buff[_channels*i+2] = (double) r.width; | ||
buff[_channels*i+3] = (double) r.height; | ||
} | ||
put(0, 0, buff); //TODO: check ret val! | ||
} | ||
|
||
|
||
public Rect2d[] toArray() { | ||
int num = (int) total(); | ||
Rect2d[] a = new Rect2d[num]; | ||
if(num == 0) | ||
return a; | ||
double buff[] = new double[num * _channels]; | ||
get(0, 0, buff); //TODO: check ret val! | ||
for(int i=0; i<num; i++) | ||
a[i] = new Rect2d(buff[i*_channels], buff[i*_channels+1], buff[i*_channels+2], buff[i*_channels+3]); | ||
return a; | ||
} | ||
public void fromList(List<Rect2d> lr) { | ||
Rect2d ap[] = lr.toArray(new Rect2d[0]); | ||
fromArray(ap); | ||
} | ||
|
||
public List<Rect2d> toList() { | ||
Rect2d[] ar = toArray(); | ||
return Arrays.asList(ar); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,100 @@ | ||
package org.opencv.core; | ||
|
||
//javadoc:Rect2d_ | ||
public class Rect2d { | ||
|
||
public double x, y, width, height; | ||
|
||
public Rect2d(double x, double y, double width, double height) { | ||
this.x = x; | ||
this.y = y; | ||
this.width = width; | ||
this.height = height; | ||
} | ||
|
||
public Rect2d() { | ||
this(0, 0, 0, 0); | ||
} | ||
|
||
public Rect2d(Point p1, Point p2) { | ||
x = (double) (p1.x < p2.x ? p1.x : p2.x); | ||
y = (double) (p1.y < p2.y ? p1.y : p2.y); | ||
width = (double) (p1.x > p2.x ? p1.x : p2.x) - x; | ||
height = (double) (p1.y > p2.y ? p1.y : p2.y) - y; | ||
} | ||
|
||
public Rect2d(Point p, Size s) { | ||
this((double) p.x, (double) p.y, (double) s.width, (double) s.height); | ||
} | ||
|
||
public Rect2d(double[] vals) { | ||
set(vals); | ||
} | ||
|
||
public void set(double[] vals) { | ||
if (vals != null) { | ||
x = vals.length > 0 ? (double) vals[0] : 0; | ||
y = vals.length > 1 ? (double) vals[1] : 0; | ||
width = vals.length > 2 ? (double) vals[2] : 0; | ||
height = vals.length > 3 ? (double) vals[3] : 0; | ||
} else { | ||
x = 0; | ||
y = 0; | ||
width = 0; | ||
height = 0; | ||
} | ||
} | ||
|
||
public Rect2d clone() { | ||
return new Rect2d(x, y, width, height); | ||
} | ||
|
||
public Point tl() { | ||
return new Point(x, y); | ||
} | ||
|
||
public Point br() { | ||
return new Point(x + width, y + height); | ||
} | ||
|
||
public Size size() { | ||
return new Size(width, height); | ||
} | ||
|
||
public double area() { | ||
return width * height; | ||
} | ||
|
||
public boolean contains(Point p) { | ||
return x <= p.x && p.x < x + width && y <= p.y && p.y < y + height; | ||
} | ||
|
||
@Override | ||
public int hashCode() { | ||
final int prime = 31; | ||
int result = 1; | ||
long temp; | ||
temp = Double.doubleToLongBits(height); | ||
result = prime * result + (int) (temp ^ (temp >>> 32)); | ||
temp = Double.doubleToLongBits(width); | ||
result = prime * result + (int) (temp ^ (temp >>> 32)); | ||
temp = Double.doubleToLongBits(x); | ||
result = prime * result + (int) (temp ^ (temp >>> 32)); | ||
temp = Double.doubleToLongBits(y); | ||
result = prime * result + (int) (temp ^ (temp >>> 32)); | ||
return result; | ||
} | ||
|
||
@Override | ||
public boolean equals(Object obj) { | ||
if (this == obj) return true; | ||
if (!(obj instanceof Rect2d)) return false; | ||
Rect2d it = (Rect2d) obj; | ||
return x == it.x && y == it.y && width == it.width && height == it.height; | ||
} | ||
|
||
@Override | ||
public String toString() { | ||
return "{" + x + ", " + y + ", " + width + "x" + height + "}"; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters