Java DIP - Thêm đường viền
Trong chương này, chúng ta học cách thêm các loại đường viền khác nhau vào hình ảnh.
Chúng tôi sử dụng OpenCV chức năng copyMakeBorder. Nó có thể được tìm thấy dướiImgprocgói hàng. Cú pháp của nó được đưa ra dưới đây:
Imgproc.copyMakeBorder(source,destination,top,bottom,left,right,borderType);
Các thông số được mô tả bên dưới:
Sr.No. | Mô tả về Thông Số |
---|---|
1 | source Nó là hình ảnh nguồn. |
2 | destination Nó là hình ảnh đích. |
3 | top Nó là chiều dài tính bằng pixel của đường viền ở đầu hình ảnh. |
4 | bottom Chiều dài tính bằng pixel của đường viền ở cuối hình ảnh. |
5 | left Nó là chiều dài tính bằng pixel của đường viền ở bên trái hình ảnh. |
6 | right Nó là chiều dài tính bằng pixel của đường viền ở bên phải hình ảnh. |
7 | borderType Nó xác định loại đường viền. Các đường viền có thể có là BORDER_REPLICATE, BORDER_REFLECT, BORDER_WRAP, BORDER_CONSTANT, v.v. |
Ngoài phương thức copyMakeBorder (), còn có các phương thức khác được cung cấp bởi lớp Imgproc. Chúng được mô tả ngắn gọn -
Sr.No. | Phương pháp & Mô tả |
---|---|
1 | cvtColor(Mat src, Mat dst, int code, int dstCn) Nó chuyển đổi một hình ảnh từ không gian màu này sang không gian màu khác. |
2 | dilate(Mat src, Mat dst, Mat kernel) Nó làm giãn hình ảnh bằng cách sử dụng một phần tử có cấu trúc cụ thể. |
3 | equalizeHist(Mat src, Mat dst) Nó cân bằng biểu đồ của một hình ảnh thang độ xám. |
4 | filter2D(Mat src, Mat dst, int depth, Mat kernel, Point anchor, double delta) Nó biến đổi một hình ảnh với hạt nhân. |
5 | GaussianBlur(Mat src, Mat dst, Size ksize, double sigmaX) Nó làm mờ hình ảnh bằng cách sử dụng bộ lọc Gaussian. |
6 | integral(Mat src, Mat sum) Nó tính tích phân của một hình ảnh. |
Thí dụ
Ví dụ sau minh họa việc sử dụng lớp Imgproc để thêm đường viền vào hình ảnh:
import org.opencv.core.Core;
import org.opencv.core.CvType;
import org.opencv.core.Mat;
import org.opencv.highgui.Highgui;
import org.opencv.imgproc.Imgproc;
public class main {
public static void main( String[] args ) {
try {
System.loadLibrary( Core.NATIVE_LIBRARY_NAME );
Mat source = Highgui.imread("digital_image_processing.jpg",
Highgui.CV_LOAD_IMAGE_COLOR);
Mat destination = new Mat(source.rows(),source.cols(),source.type());
int top, bottom, left, right;
int borderType;
/// Initialize arguments for the filter
top = (int) (0.05*source.rows());
bottom = (int) (0.05*source.rows());
left = (int) (0.05*source.cols());
right = (int) (0.05*source.cols());
destination = source;
Imgproc.copyMakeBorder(source, destination, top, bottom, left, right, Imgproc.BORDER_WRAP);
Highgui.imwrite("borderWrap.jpg", destination);
} catch (Exception e) {
System.out.println("error: " + e.getMessage());
}
}
}
Đầu ra
Khi bạn thực thi mã đã cho, kết quả sau sẽ được nhìn thấy: