Java DIP - ज़ूमिंग इफ़ेक्ट बनाएँ

ज़ूमिंग एक छवि को बड़ा करने की प्रक्रिया है ताकि छवि में विवरण अधिक दृश्यमान और प्रमुख हो जाए।

हम प्रयोग करते हैं OpenCV समारोह resizeछवियों पर ज़ूमिंग लागू करने के लिए। इसके तहत पाया जा सकता हैImgprocपैकेज। इसका सिंटैक्स नीचे दिया गया है -

Imgproc.resize(source,destination, destination.size(),zoomFactor,zoomFactor,Interpolation);

आकार परिवर्तन समारोह में, हम स्रोत छवि, गंतव्य छवि और उसके आकार, ज़ूमिंग कारक और उपयोग करने के लिए प्रक्षेप विधि को पास करते हैं।

उपलब्ध प्रक्षेप विधि नीचे वर्णित हैं -

अनु क्रमांक। प्रक्षेप विधि और विवरण
1

INTER_NEAREST

यह निकटतम-पड़ोसी प्रक्षेप है।

2

INTER_LINEAR

यह बिलिनियर इंटरपोलेशन है (डिफ़ॉल्ट रूप से उपयोग किया जाता है)।

3

INTER_AREA

यह पिक्सेल क्षेत्र के संबंध का उपयोग करके पुनः साझा कर रहा है। यह चित्रण के लिए एक पसंदीदा तरीका हो सकता है, क्योंकि यह अधिक मुक्त परिणाम देता है।

4

INTER_CUBIC

यह 4x4 पिक्सेल के पड़ोस में एक द्वि-घन प्रक्षेप है।

5

INTER_LANCZOS4

यह 8x8 पिक्सेल के पड़ोस में लैंक्ज़ोस प्रक्षेप है।

आकार विधि के अलावा, Imgproc वर्ग द्वारा प्रदान की गई अन्य विधियां हैं। उन्हें संक्षेप में वर्णित किया गया है -

अनु क्रमांक। विधि और विवरण
1

cvtColor(Mat src, Mat dst, int code, int dstCn)

यह एक छवि को एक रंग स्थान से दूसरे में परिवर्तित करता है।

2

dilate(Mat src, Mat dst, Mat kernel)

यह एक विशिष्ट संरचना तत्व का उपयोग करके एक छवि को पतला करता है।

3

equalizeHist(Mat src, Mat dst)

यह एक स्केल इमेज के हिस्टोग्राम की बराबरी करता है।

4

filter2D(Mat src, Mat dst, int ddepth, Mat kernel, Point anchor, double delta)

यह कर्नेल के साथ एक छवि को दर्शाता है।

5

GaussianBlur(Mat src, Mat dst, Size ksize, double sigmaX)

यह एक गाऊसी फिल्टर का उपयोग करके एक छवि को धुंधला करता है।

6

integral(Mat src, Mat sum)

यह एक छवि के अभिन्न की गणना करता है।

उदाहरण

निम्न उदाहरण छवि को ज़ूम करने के लिए Imgproc वर्ग के उपयोग को प्रदर्शित करता है।

import org.opencv.core.Core;
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 {
         int zoomingFactor = 2;
         System.loadLibrary( Core.NATIVE_LIBRARY_NAME );
         
         Mat source = Highgui.imread("image.jpg", Highgui.CV_LOAD_IMAGE_GRAYSCALE);
         Mat destination = new Mat(source.rows() * zoomingFactor, source.cols()*  zoomingFactor,source.type());  
         
         Imgproc.resize(source, destination, destination.size(),  zoomingFactor,zoomingFactor,Imgproc.INTER_NEAREST);
         Highgui.imwrite("zoomed.jpg", destination);
         
      } catch (Exception e) {
         System.out.println("Error: "+e.getMessage());
      }
   }
}

उत्पादन

जब आप दिए गए कोड को निष्पादित करते हैं, तो निम्न आउटपुट देखा जाता है -

मूल छवि

ज़ूम की गई छवि (ज़ूमिंग कारक - 2)