> Java > java지도 시간 > 본문

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

WBOY
풀어 주다: 2023-08-18 18:34:21
앞으로
1555명이 탐색했습니다.

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으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!