>Java >java지도 시간 >OpenCV의 Mat 객체를 JavaFX의 WritableImage 객체로 변환하는 방법은 무엇입니까?

OpenCV의 Mat 객체를 JavaFX의 WritableImage 객체로 변환하는 방법은 무엇입니까?

WBOY
WBOY앞으로
2023-08-18 18:34:211625검색

OpenCV의 Mat 객체를 JavaFX의 WritableImage 객체로 변환하는 방법은 무엇입니까?

OpenCV의 imread() 메서드를 사용하여 이미지를 읽으려고 하면 Mat 개체가 반환됩니다. JavaFX 창을 사용하여 결과 Mat 객체의 내용을 표시하려면 Mat 객체를 javafx.scene.image.WritableImage 클래스의 객체로 변환해야 합니다. 이렇게 하려면 다음 단계를 따라야 합니다.

  • Mat를 MatOfByte로 인코딩 - 먼저 행렬을 바이트 행렬로 변환해야 합니다. 이를 달성하려면 Imgcodecs 클래스의 imencode() 메서드를 사용할 수 있습니다.

  • 이 메서드는 문자열 매개변수(이미지 형식 지정), Mat 개체(이미지 표시) 및 MatOfByte 개체를 허용합니다.

  • MatOfByte 객체를 바이트 배열로 변환 - toArray() 메서드를 사용하여 MatOfByte 객체를 바이트 배열로 변환합니다.

  • Instantiate ByteArrayInputStream - ​​​​이전 단계에서 생성된 바이트 배열을 생성자 중 하나에 전달하여 ByteArrayInputStream 클래스를 인스턴스화합니다.

  • Create BufferedImage 객체 - 이전 단계에서 생성된 입력 스트림 객체를 ImageIO 클래스의 read() 메서드에 전달합니다. 그러면 BufferedImage 객체가 반환됩니다.

  • 마지막으로 이전 단계에서 얻은 BufferedImage 객체를 매개변수로 가져와 SwingFXUtils 클래스의 toFXImage() 메서드를 호출합니다.

import java.awt.image.BufferedImage;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import javax.imageio.ImageIO;
import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.core.MatOfByte;
import org.opencv.imgcodecs.Imgcodecs;
import javafx.embed.swing.SwingFXUtils;
import javafx.scene.image.WritableImage;
public class Mat2WritableImage {
   public static WritableImage Mat2WritableImage(Mat mat) throws IOException{
      //Encoding the image
      MatOfByte matOfByte = new MatOfByte();
      Imgcodecs.imencode(".jpg", mat, matOfByte);
      //Storing the encoded Mat in a byte array
      byte[] byteArray = matOfByte.toArray();
      //Preparing the Buffered Image
      InputStream in = new ByteArrayInputStream(byteArray);
      BufferedImage bufImage = ImageIO.read(in);
      System.out.println("Image Loaded");
      WritableImage writableImage = SwingFXUtils.toFXImage(bufImage, null);
      return writableImage;
   }
   public static void main(String args[]) throws Exception {
      //Loading the OpenCV core library
      System.loadLibrary( Core.NATIVE_LIBRARY_NAME );
      //Reading the Image from the file
      String file = "C:/EXAMPLES/OpenCV/sample.jpg";
      Mat image = Imgcodecs.imread(file);
      WritableImage obj = Mat2WritableImage(image);
      System.out.println(obj);
   }
}

Output

Image Loaded
javafx.scene.image.WritableImage@142269f2

위 내용은 OpenCV의 Mat 객체를 JavaFX의 WritableImage 객체로 변환하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 tutorialspoint.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제