OpenCV - Thêm đường viền
Chương này hướng dẫn bạn cách con cóc viền vào một hình ảnh.
Phương thức copyMakeBorder ()
Bạn có thể thêm các đường viền khác nhau vào hình ảnh bằng cách sử dụng phương pháp copyMakeBorder() của lớp có tên Core, thuộc về gói org.opencv.core. sau đây là cú pháp của phương thức này.
copyMakeBorder(src, dst, top, bottom, left, right, borderType)
Phương thức này chấp nhận các tham số sau:
src - Một đối tượng của lớp Mat đại diện cho hình ảnh nguồn (đầu vào).
dst - Một đối tượng của lớp Mat đại diện cho hình ảnh đích (đầu ra).
top - Một biến số nguyên kiểu số nguyên đại diện cho độ dài của đường viền ở trên cùng của hình ảnh.
bottom - Một biến số nguyên kiểu số nguyên đại diện cho độ dài của đường viền ở dưới cùng của hình ảnh.
left - Một biến số nguyên, kiểu số nguyên đại diện cho độ dài của đường viền ở bên trái của hình ảnh.
right - Một biến số nguyên kiểu số nguyên đại diện cho độ dài của đường viền ở bên phải của hình ảnh.
borderType - Một biến kiểu số nguyên đại diện cho kiểu đường viền sẽ được sử dụng.
Thí dụ
Chương trình sau đây là một ví dụ minh họa, cách thêm đường viền vào một hình ảnh nhất định.
import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.imgcodecs.Imgcodecs;
public class AddingBorder {
public static void main( String[] args ) {
// Loading the OpenCV core library
System.loadLibrary( Core.NATIVE_LIBRARY_NAME );
// Reading the Image from the file and storing it in to a Matrix object
String file ="E:/OpenCV/chap15/input.jpg";
Mat src = Imgcodecs.imread(file);
// Creating an empty matrix to store the result
Mat dst = new Mat();
Core.copyMakeBorder(src, dst, 20, 20, 20, 20, Core.BORDER_CONSTANT);
Imgcodecs.imwrite("E:/OpenCV/chap15/border_constant.jpg", dst);
System.out.println("Image Processed");
}
}
Giả sử rằng sau đây là hình ảnh đầu vào thresh_input.jpg được chỉ định trong chương trình trên.
Đầu ra
Khi thực hiện chương trình, bạn sẽ nhận được kết quả sau:
Image Processed
Nếu bạn mở đường dẫn được chỉ định, bạn có thể quan sát hình ảnh đầu ra như sau:
Các loại biên giới khác
Ngoài kiểu viền, BORDER_CONSTANTđã trình bày trong ví dụ trước, OpenCV phục vụ nhiều loại đường viền khác nhau. Tất cả các kiểu này được đại diện bởi các trường tĩnh được xác định trước (giá trị cố định) của lớp Core.
Bạn có thể chọn loại hoạt động ngưỡng bạn cần, bằng cách chuyển giá trị được xác định trước tương ứng của nó cho tham số có tên borderType sau đó copyMakeBorder() phương pháp.
Core.copyMakeBorder(src, dst, 20, 20, 20, 20, Core.BORDER_CONSTANT);
Sau đây là các giá trị đại diện cho các loại hoạt động biên giới khác nhau và kết quả đầu ra tương ứng của chúng.
Hoạt động và mô tả | Đầu ra |
---|---|
BORDER_CONSTANT |
|
BORDER_ISOLATED |
|
BORDER_DEFAULT |
|
BORDER_REFLECT |
|
BORDER_REFLECT_101 |
|
BORDER_REFLECT101 |
|
BORDER_REPLICATE |
|
BORDER_WRAP |
|