OpenCV - การเพิ่มพรมแดน
บทนี้จะสอนให้คุณรู้ว่าคางคกมีขอบภาพอย่างไร
copyMakeBorder () วิธีการ
คุณสามารถเพิ่มเส้นขอบต่างๆให้กับรูปภาพโดยใช้วิธีนี้ copyMakeBorder() ของคลาสชื่อ Core ซึ่งเป็นของแพ็กเกจ org.opencv.core. ต่อไปนี้เป็นไวยากรณ์ของวิธีนี้
copyMakeBorder(src, dst, top, bottom, left, right, borderType)
วิธีนี้ยอมรับพารามิเตอร์ต่อไปนี้ -
src - วัตถุของคลาส Mat แสดงภาพแหล่งที่มา (อินพุต)
dst - วัตถุของคลาส Mat แสดงภาพปลายทาง (เอาต์พุต)
top - ตัวแปรของจำนวนเต็มประเภทจำนวนเต็มแทนความยาวของเส้นขอบที่ด้านบนของรูปภาพ
bottom - ตัวแปรจำนวนเต็มชนิดจำนวนเต็มแทนความยาวของเส้นขอบที่ด้านล่างของรูปภาพ
left - ตัวแปรของจำนวนเต็มชนิดจำนวนเต็มแทนความยาวของเส้นขอบทางด้านซ้ายของรูปภาพ
right - ตัวแปรของจำนวนเต็มประเภทจำนวนเต็มแทนความยาวของเส้นขอบทางด้านขวาของรูปภาพ
borderType - ตัวแปรประเภทจำนวนเต็มแทนชนิดของเส้นขอบที่จะใช้
ตัวอย่าง
โปรแกรมต่อไปนี้เป็นตัวอย่างการสาธิตวิธีการเพิ่มเส้นขอบให้กับภาพที่กำหนด
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");
}
}
สมมติว่าต่อไปนี้เป็นภาพอินพุต thresh_input.jpg ระบุไว้ในโปรแกรมข้างต้น
เอาต์พุต
ในการรันโปรแกรมคุณจะได้รับผลลัพธ์ต่อไปนี้ -
Image Processed
หากคุณเปิดเส้นทางที่ระบุคุณสามารถสังเกตภาพที่ส่งออกได้ดังนี้ -
พรมแดนประเภทอื่น ๆ
นอกจากประเภทเส้นขอบแล้ว BORDER_CONSTANTแสดงให้เห็นในตัวอย่างก่อนหน้า OpenCV ให้บริการพรมแดนประเภทอื่น ๆ ประเภททั้งหมดนี้แสดงโดยฟิลด์คงที่ที่กำหนดไว้ล่วงหน้า (ค่าคงที่) ของคลาส Core
คุณสามารถเลือกประเภทของการดำเนินการขีด จำกัด ที่คุณต้องการโดยส่งผ่านค่าที่กำหนดไว้ล่วงหน้าตามลำดับไปยังพารามิเตอร์ที่ชื่อ borderType ของ copyMakeBorder() วิธี.
Core.copyMakeBorder(src, dst, 20, 20, 20, 20, Core.BORDER_CONSTANT);
ค่าต่อไปนี้เป็นค่าที่แสดงถึงการดำเนินการเกี่ยวกับพรมแดนประเภทต่างๆและผลลัพธ์ตามลำดับ
การทำงานและคำอธิบาย | เอาต์พุต |
---|---|
BORDER_CONSTANT |
|
BORDER_ISOLATED |
|
BORDER_DEFAULT |
|
BORDER_REFLECT |
|
BORDER_REFLECT_101 |
|
BORDER_REFLECT101 |
|
BORDER_REPLICATE |
|
BORDER_WRAP |
|