Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Java

JavaFX और OpenCV का उपयोग करके छवि की चमक और कंट्रास्ट को बदलना

कन्वर्ट टू () org.opencv.core.Mat . की विधि वर्ग 4 मापदंडों को स्वीकार करता है:मैट (खाली मैट्रिक्स), rtype (पूर्णांक), अल्फा (पूर्णांक), बीटा (पूर्णांक), एक ही क्रम में।

  • चमक बढ़ाने के लिए - आपको बीटा मान को 0 से घटाकर -255 (अल्फ़ा मान 1 रखते हुए) करना होगा।

  • चमक कम करने के लिए - आपको बीटा मान को 0 से बढ़ाकर 255 (अल्फ़ा मान 1 रखते हुए) करना होगा।

  • कंट्रास्ट बढ़ाने के लिए - आपको अल्फा मान को 1 से बढ़ाकर 100 करना होगा (बीटा मान 0 रखते हुए)।

  • कंट्रास्ट कम करने के लिए - आपको अल्फा मान को 1 से घटाकर 0 करना होगा (बीटा मान 0 रखते हुए)।

उदाहरण

अल्फा बीटा मानों को बदलने के लिए दो स्लाइड बार के साथ एक JavaFX प्रोग्राम निम्नलिखित है।

आयात करें javafx.beans.value.ObservableValue;import javafx.embed.swing.SwingFXUtils;import javafx.geometry.Insets;import javafx.scene.Scene;import javafx.scene.control.Label;import javafx.scene.control.Slider;import javafx.scene.image.ImageView;import javafx.scene.image.WritableImage;import javafx.scene.layout.VBox;import javafx.stage.Stage;import javax.imageio.ImageIO;import org.opencv.core.Core;import org.opencv.core.Mat;import org.opencv.core.MatOfByte;import org.opencv.imgcodecs.Imgcodecs;सार्वजनिक वर्ग AlphaBetaValuesJavaFX एप्लिकेशन का विस्तार करता है {डबल कंट्रास्ट =1; निजी अंतिम int rtype =-1; डबल अल्फा =1; डबल बीटा =0; स्लाइडर स्लाइडर1; स्लाइडर स्लाइडर2; मैट स्रोत =शून्य; सार्वजनिक शून्य प्रारंभ (चरण चरण) IOException फेंकता है {// OpenCV कोर लाइब्रेरी लोड हो रहा है System.loadLibrary(Core.NATIVE_LIBRARY_NAME); स्ट्रिंग फ़ाइल ="डी:\\छवि\\lamma2.jpg"; src =Imgcodecs.imread (फ़ाइल); लिखने योग्य छवि लिखने योग्य छवि =लोड इमेज (src); // छवि दृश्य सेट करना ImageView छवि दृश्य =नया छवि दृश्य (लिखने योग्य छवि); imageView.setX(50); imageView.setY(25); imageView.setFitHeight(400); imageView.setFitWidth(550); imageView.setPreserveRatio (सच); लेबल लेबल 1 =नया लेबल ("अल्फा मान"); // स्लाइडर स्लाइडर सेट करना 1 =नया स्लाइडर (0.1, 3, 1); स्लाइडर1.सेटशो टिकलेबल (सच); स्लाइडर1.सेटशो टिकमार्क (सच); स्लाइडर1.सेटमेजरटिक यूनिट (1); स्लाइडर1.सेटब्लॉकइन्क्रिमेंट(0.05); // लेबल लेबल सेट करना लेबल 2 =नया लेबल (); लेबल लेबल 3 =नया लेबल ("बीटा मान"); // स्लाइडर स्लाइडर सेट करना 2 =नया स्लाइडर (-100, 100, 0); स्लाइडर2.सेटशो टिकलेबल (सच); स्लाइडर2.सेटशो टिकमार्क (सच); स्लाइडर2.सेटमेजरटिकयूनीट(25); स्लाइडर2.सेटब्लॉकइन्क्रिमेंट(10); // लेबल लेबल सेट करना लेबल 4 =नया लेबल (); // स्लाइडर स्लाइडर 1 के लिए श्रोता। वैल्यूप्रॉपर्टी ()। एड लिस्टनर (नया चेंजलिस्टर <नंबर> () {सार्वजनिक शून्य बदल गया (अवलोकन योग्य मूल्य अवलोकन योग्य, संख्या पुराना मान, संख्या नया मूल्य) {कोशिश करें {label2.setText ("α- मान:"+ newValue); अल्फा =newValue.doubleValue (); मैट डेस्ट =नया मैट (src.rows (), src.cols (), src.type ()); src.convertTo (dest, rtype, alpha, बीटा); imageView.setImage(loadImage(dest)); } पकड़ें (अपवाद ई) { System.out.println (""); }}}); स्लाइडर2.valueProperty().addListener(new ChangeListener() {सार्वजनिक शून्य बदल गया (अवलोकन योग्य देखने योग्य, संख्या पुराना मान, संख्या नया मान) {कोशिश करें {label4.setText ("β-मान:" + newValue); बीटा =newValue.doubleValue (); मैट डेस्ट =नया मैट (src.rows (), src.cols (), src.type ()); src.convertTo (dest, rtype, alpha, beta); imageView.setImage (loadImage(dest)); } पकड़ (अपवाद ई) { System.out.println (""); }}}); // VBox सभी तीन घटकों को व्यवस्थित करने के लिए VBox vbox =new VBox (); vbox.setPadding(नए इनसेट(20)); vbox.setSpaceing(10); vbox.getChildren ()। AddAll (लेबल 1, स्लाइडर 1, लेबल 2, इमेज व्यू, लेबल 3, स्लाइडर 2, लेबल 4); // एक दृश्य वस्तु बनाना दृश्य दृश्य =नया दृश्य (vbox, 600, 580); स्टेज.सेटटाइटल ("इमेज लोड हो रहा है"); स्टेज.सेटसीन (दृश्य); मंच पर शो(); } सार्वजनिक लिखने योग्य छवि लोड इमेज (मैट छवि) IOException फेंकता है {MatOfByte matOfByte =new MatOfByte (); Imgcodecs.imencode(.jpg", image, matOfByte); // एन्कोडेड मैट को एक बाइट सरणी में संग्रहीत करना बाइट [] बाइटअरे =matOfByte.toArray (); // छवि इनपुटस्ट्रीम को प्रदर्शित करना =नया बाइटअरेइनपुटस्ट्रीम (बाइटएरे); BufferedImage bufImage =ImageIO.read (इन); System.out.println ("इमेज लोडेड"); WritableImage writableImage =SwingFXUtils.toFXImage(bufImage, null); वापसी योग्य छवि; } सार्वजनिक स्थैतिक शून्य मुख्य (स्ट्रिंग आर्ग []) {लॉन्च (तर्क); }}

इनपुट इमेज

JavaFX और OpenCV का उपयोग करके छवि की चमक और कंट्रास्ट को बदलना

आउटपुट

JavaFX और OpenCV का उपयोग करके छवि की चमक और कंट्रास्ट को बदलना


  1. OpenCV का उपयोग करके किसी छवि की चमक को कम करने के लिए JavaFX उदाहरण।

    Java का उपयोग करके किसी छवि की चमक को बदलने का एक तरीका convertTo() का उपयोग करना है तरीका। यह विधि किसी छवि के कंट्रास्ट और चमक को बदलने के लिए दिए गए मैट्रिक्स पर आवश्यक गणना करती है। यह विधि 4 पैरामीटर स्वीकार करती है - चटाई -रिक्त मैट्रिक्स परिणाम को समान आकार और स्रोत मैट्रिक्स के प्रकार के

  1. Java OpenCV लाइब्रेरी का उपयोग करके किसी छवि की चमक को कैसे बदलें?

    कन्वर्ट टू () org.opencv.core.Mat . की विधि क्लास किसी इमेज के कंट्रास्ट और ब्राइटनेस को बदलने के लिए दिए गए मैट्रिक्स पर जरूरी कैलकुलेशन करता है। यह विधि 4 पैरामीटर स्वीकार करती है - चटाई -रिक्त मैट्रिक्स परिणाम को समान आकार और स्रोत मैट्रिक्स के प्रकार के साथ रखने के लिए। rtype - आउटपुट मैट्

  1. Java OpenCV लाइब्रेरी का उपयोग करके किसी छवि के कंट्रास्ट को कैसे बदलें?

    किसी छवि की चमक और कंट्रास्ट का बढ़ना / घटाना ऐसे ऑपरेशन हैं जिन्हें छवि के पिक्सेल को बदलकर प्राप्त किया जा सकता है। इसे एक समीकरण के रूप में व्यक्त किया जा सकता है - g(i, j) =α । f(i, j)+ β कहां, (i, j) पिक्सल की पोजीशन हैं। α (लाभ) और β (पूर्वाग्रह) परिवर्तन के पैरामीटर हैं। कभी-कभी गेन