Захват изображения с использованием java в eclipse

Это мой код

import java.awt.image.BufferedImage;
import java.awt.image.DataBufferByte;
import java.awt.image.WritableRaster;

import java.io.FileNotFoundException;
import java.io.IOException;

import javafx.application.Application;
import javafx.embed.swing.SwingFXUtils;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.image.ImageView;
import javafx.scene.image.WritableImage;
import javafx.stage.Stage;

import org.opencv.core.Core; 
import org.opencv.core.Mat; 
import org.opencv.videoio.VideoCapture;  

public class TakingSnapshotUsingCamera extends Application { 
Mat matrix = null; 


public void start(Stage stage) throws FileNotFoundException, IOException 
{        

//Capturing the snapshot from the camera 
TakingSnapshotUsingCamera obj = new TakingSnapshotUsingCamera(); 
WritableImage writableImage = obj.capureSnapShot();  

//Setting the image view 
ImageView imageView = new ImageView(writableImage); 

//setting the fit height and width of the image view 
imageView.setFitHeight(400); 
imageView.setFitWidth(600); 

//Setting the preserve ratio of the image view 
imageView.setPreserveRatio(true);  

//Creating a Group object  
Group root = new Group(imageView); 

//Creating a scene object 
Scene scene = new Scene(root, 600, 400); 

//Setting title to the Stage 
stage.setTitle("Capturing an image"); 

//Adding scene to the satge 
stage.setScene(scene); 

//Displaying the contents of the stage 
stage.show();       
}

public WritableImage capureSnapShot() { 
WritableImage WritableImage = null; 

//Loading the OpenCV core library  
System.loadLibrary( Core.NATIVE_LIBRARY_NAME );        

//Instantiating the VideoCapture class (camera:: 0) 
VideoCapture capture = new VideoCapture(0);     

//Reading the next video frame from the camera 
Mat matrix = new Mat(); 
capture.read(matrix); 

//If camera is opened  
if(capture.isOpened()) { 

//If there is next video frame 
if (capture.read(matrix)) {      

//Creating BuffredImage from the matrix 
BufferedImage image = new BufferedImage(matrix.width(), matrix.height(), 
BufferedImage.TYPE_3BYTE_BGR); 

WritableRaster raster = image.getRaster(); 
DataBufferByte dataBuffer = (DataBufferByte) raster.getDataBuffer(); 
byte[] data = dataBuffer.getData(); matrix.get(0, 0, data); 
this.matrix = matrix; 

//Creating the Writable Image 
WritableImage = SwingFXUtils.toFXImage(image, null); 
} 
}
return WritableImage; 
}  
public static void main(String args[]) {  
launch(args);  
}  
}

получение ошибки здесь как

ImageView imageView = new ImageView(writableImage); The constructor ImageView(WritableImage) is undefined

и так много ошибок в этом коде, я уже импортировал эти файлы jar. но все еще дает мне ошибку. Я использую библиотеку opencv. как добавить библиотеку opencv, которую я уже добавил, но я не знаю, правильно это или нет, любая помощь Спасибо заранее.

почему бы не попытаться преобразовать WritableImage в byte [], а затем преобразовать его в изображение?

Elarbi Mohamed Aymen 11.04.2018 13:07

Несоответствие типов: невозможно преобразовать из WritableImage. если я изменю, это будет моя новая ошибка.

Beta 11.04.2018 13:15

ребята, помогите пожалуйста.

Beta 11.04.2018 13:24
0
3
110
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий
ByteArrayOutputStream  byteOutput = new ByteArrayOutputStream();

ImageIO.write( SwingFXUtils.fromFXImage( writableImage, null ), "png", byteOutput );

InputStream myInputStream = new ByteArrayInputStream(byteOutput.toByteArray()); 

//setting the image
ImageView imageView = new ImageView(new Image(myInputStream)); 

Исключение в методе запуска приложения, получающее это исключение при запуске консоли.

Beta 11.04.2018 14:15

Другие вопросы по теме