-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathSimpleBinaryFilter.java
More file actions
50 lines (42 loc) · 1.4 KB
/
SimpleBinaryFilter.java
File metadata and controls
50 lines (42 loc) · 1.4 KB
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
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package pkg2014vision;
import static org.bytedeco.javacpp.opencv_core.CV_8U;
import org.bytedeco.javacpp.opencv_core.CvMat;
import org.bytedeco.javacpp.opencv_core.CvScalar;
import static org.bytedeco.javacpp.opencv_core.cvGet2D;
/**
*
* @author Jared "Jär Bär" Gentner
*/
public class SimpleBinaryFilter implements Filter {
private Threshold threshold;
public SimpleBinaryFilter(Character[][] HSVValues) {
this.threshold = new Threshold(HSVValues);
}
public SimpleBinaryFilter(Threshold threshold) {
this.threshold = threshold;
}
public SimpleBinaryFilter() {
}
@Override
public CvMat runFilter(CvMat image) {
CvMat dest = CvMat.create(image.rows(), image.cols(), CV_8U);
for (int i = 0; i < image.rows(); ++i) {
for (int j = 0; j < image.cols(); ++j) {
CvScalar pixel = cvGet2D(image, i, j);
double h = pixel.val(0),
s = pixel.val(1),
v = pixel.val(2);
dest.put(i, j, threshold.filter(h, s, v) ? 0xFF : 0);
}
}
return dest;
}
public void setThreshold(Threshold... threshold) {
this.threshold = threshold[0];
}
}