parent
bc18fb481f
commit
18bc4db75c
5 changed files with 132 additions and 10 deletions
@ -0,0 +1,58 @@ |
|||||||
|
import org.opencv.core.*; |
||||||
|
import org.opencv.highgui.HighGui; |
||||||
|
import org.opencv.imgproc.Imgproc; |
||||||
|
|
||||||
|
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 |
||||||
|
{ |
||||||
|
public static void main(String[] args) { |
||||||
|
// load the native OpenCV library
|
||||||
|
System.loadLibrary(Core.NATIVE_LIBRARY_NAME); |
||||||
|
new HitMissRun().run(); |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,38 @@ |
|||||||
|
import cv2 |
||||||
|
import numpy as np |
||||||
|
|
||||||
|
input_image = np.array(( |
||||||
|
[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]), dtype="uint8") |
||||||
|
|
||||||
|
kernel = np.array(( |
||||||
|
[0, 1, 0], |
||||||
|
[1, -1, 1], |
||||||
|
[0, 1, 0]), dtype="int") |
||||||
|
|
||||||
|
output_image = cv2.morphologyEx(input_image, cv2.MORPH_HITMISS, kernel) |
||||||
|
|
||||||
|
rate = 50 |
||||||
|
kernel = (kernel + 1) * 127 |
||||||
|
kernel = np.uint8(kernel) |
||||||
|
|
||||||
|
kernel = cv2.resize(kernel, None, fx = rate, fy = rate, interpolation = cv2.INTER_NEAREST) |
||||||
|
cv2.imshow("kernel", kernel) |
||||||
|
cv2.moveWindow("kernel", 0, 0) |
||||||
|
|
||||||
|
input_image = cv2.resize(input_image, None, fx = rate, fy = rate, interpolation = cv2.INTER_NEAREST) |
||||||
|
cv2.imshow("Original", input_image) |
||||||
|
cv2.moveWindow("Original", 0, 200) |
||||||
|
|
||||||
|
output_image = cv2.resize(output_image, None , fx = rate, fy = rate, interpolation = cv2.INTER_NEAREST) |
||||||
|
cv2.imshow("Hit or Miss", output_image) |
||||||
|
cv2.moveWindow("Hit or Miss", 500, 200) |
||||||
|
|
||||||
|
cv2.waitKey(0) |
||||||
|
cv2.destroyAllWindows() |
Loading…
Reference in new issue