-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathHitMiss.java
More file actions
58 lines (45 loc) · 1.84 KB
/
Copy pathHitMiss.java
File metadata and controls
58 lines (45 loc) · 1.84 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
51
52
53
54
55
56
57
58
package opencvtutorial;
import org.opencv.core.*;
import org.opencv.highgui.HighGui;
import org.opencv.imgproc.Imgproc;
import origami.Origami;
class HitMissRun {
public void run() {
Mat input_image = new Mat(8, 8, CvType.CV_8UC1);
int row = 0, col = 0;
input_image.put(row, col, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 0, 0, 0, 255, 0, 255, 255, 255, 0, 0, 0, 0,
0, 255, 255, 255, 0, 255, 0, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 255, 0, 0, 255, 255, 0, 0, 255, 0, 255,
0, 0, 255, 0, 0, 255, 255, 255, 0, 0, 0, 0);
Mat kernel = new Mat(3, 3, CvType.CV_16S);
kernel.put(row, col, 0, 1, 0, 1, -1, 1, 0, 1, 0);
Mat output_image = new Mat();
Imgproc.morphologyEx(input_image, output_image, Imgproc.MORPH_HITMISS, kernel);
int rate = 50;
Core.add(kernel, new Scalar(1), kernel);
Core.multiply(kernel, new Scalar(127), kernel);
kernel.convertTo(kernel, CvType.CV_8U);
Imgproc.resize(kernel, kernel, new Size(), rate, rate, Imgproc.INTER_NEAREST);
HighGui.imshow("kernel", kernel);
HighGui.moveWindow("kernel", 0, 0);
Imgproc.resize(input_image, input_image, new Size(), rate, rate, Imgproc.INTER_NEAREST);
HighGui.imshow("Original", input_image);
HighGui.moveWindow("Original", 0, 200);
Imgproc.resize(output_image, output_image, new Size(), rate, rate, Imgproc.INTER_NEAREST);
HighGui.imshow("Hit or Miss", output_image);
HighGui.moveWindow("Hit or Miss", 500, 200);
HighGui.waitKey(0);
System.exit(0);
}
}
public class HitMiss {
static {
try {
// Load the native OpenCV library
Origami.init();
} catch (Exception e) {
}
}
public static void main(String[] args) {
new HitMissRun().run();
}
}