I am new to JavaFX and OpenCV. The Problem is, that JavaFX can't handle Mat objects. First I load an image as a BufferedImage. Then i have to convert this to Mat. Do my image Processing with OpenCV and again convert the result image to a BufferedImage to display in on my UI. Here are the methods for converting Buff to Mat and Mat to Buff I found on the internet:
public static Mat img2Mat(BufferedImage image)
{
byte[] data = ((DataBufferByte) image.getRaster().getDataBuffer()).getData();
Mat mat = new Mat(image.getHeight(), image.getWidth(), CvType.CV_8UC3);
mat.put(0, 0, data);
return mat;
[Code] ....
Next I do some OpenCV stuff:
public static BufferedImage hello(BufferedImage img) {
Mat source = img2Mat(img); //Convert Buff to Mat
BufferedImage outImg = null;
try{
System.loadLibrary( Core.NATIVE_LIBRARY_NAME );
[Code] ....
Finally I call the hello method in my controller:
void menuItemTestFired(ActionEvent event) {
try {
result = ImageProc.hallo(bImage);//bImage is an image I've loaded before.
imageView.setImage(SwingFXUtils.toFXImage(result, null));
[Code] .....
Unfortunately I get a lot of errors. Here are the first one:
Caused by: java.lang.UnsatisfiedLinkError: org.opencv.core.Mat.n_Mat(III)J
at org.opencv.core.Mat.n_Mat(Native Method)
at org.opencv.core.Mat.<init>(Mat.java:471)
What I am doing is loading a new image from resources in my project, so that I can get the size. Using this, I create a new BufferedImage with those dimensions. The following code is what I am using to take the original BufferedImage, and scale it.
Java Code:
public ImageIcon getBackImage(){ before = new BufferedImage((int)img.getWidth(null), (int)img.getHeight(null), BufferedImage.TYPE_INT_ARGB); int w = before.getWidth(); int h = before.getHeight(); try{ URL url = getClass().getResource("/Blue_Back.png"); before = ImageIO.read(url);
[Code] ......
The scaling seems to be working fine, but what I have noticed is a line of approximately 10 pixels at the top of the image. I took the original image and blew it up to ensure that I wasn't just enlarging undesired portions and this wasn't the case. I then tried to fetch a subImage of the BufferedImage, and that also left the padding at the top. Is there something I am missing that is placing this undesired padding at the top of my bufferedImages ?
I am making a 2d game engine and i was wonder is it better to use BufferedImages and subImages to store/render sprites from sprite sheets or use BufferedImages and store it in a pixel array and then manipulate the pixel array to do what you want.
Basically is loading in BufferedImage and getting the tile of the sprite sheet with subImages better than loading in a BufferedImage and then putting the data in a pixel array and making a new array with the part of the BufferedImage you want.what i have been told the BufferedImage and subImage use more of the graphics card and the pixel array method uses more of the processor.
I need to write an image to a .png with a 255-color indexed color model. I know usually do it like this: Java Code: BufferedImage img=new BufferedImage(width,height,BufferedImage.TYPE_BYTE_INDEXED,model); mh_sh_highlight_all('java'); but that doesn't work with models with 255 colors (as opposed to 256 colors). I'm fairly sure it is the BufferedImage creation that is the problem, as when I call model.getMapSize(), it returns the correct size.
The extra color added to the image's index is 15,15,15.
Should I be something other than a BufferedImage to write the image, or should I be using a different constructor for BufferedImage, or am I doing something else wrong?
I need my Java program (I'm working in Eclipse if it matters) to detect if an image is a portrait or a landscape, but since i am directly downloading them from my camera they only have it written somewhere in metadata, the image width and height is the same for landscape and portrait. I have the rotation code and the rest of the program working, but I need to somehow get a variable (for example integer one) to tell me if it is a portrait or a landscape image. I tried getting to the metadata but my Eclipse decided that import com.drew.metadata.Metadata; cannot be resolved.
BufferedImage image = ImageIO.read(new File(imagePath, imageName)); and after I get the variable "orientation" it looks like this
int orientation = ???; BufferedImage newImage = oldImage; if (orientation>1){ newImage = rotate(oldImage); }
I'm working on a project based on Roger Alsing's Mona Lisa evolution.
My problem seems to be that when I compare the RGB values of the target image and the randomly generated image, I don't get a representative result of how "close" the two images are.
I load the target image (a 24-bit bitmap) using:
img = ImageIO.read(new File(filePath));
I draw onto a BufferedImage with:
for(int i = 0; i < numPolys*12; i += 12){ p[(int)(i/12)].addPoint(gene[i], gene[i+1]); p[(int)(i/12)].addPoint(gene[i+2], gene[i+3]); p[(int)(i/12)].addPoint(gene[i+4], gene[i+5]); p[(int)(i/12)].addPoint(gene[i+6], gene[i+7]); Color mycol = new Color(gene[i+8], gene[i+9], gene[i+10], gene[i+11]); gf.setColor(mycol); gf.fillPolygon(p[(int)(i/12)]); }
And I compare the BufferedImage with the target image using:
for(int x = 0; x < inGene.x; ++x){ for(int y = 0; y < inGene.y; ++y){ Color mycol1 = new Color(exp.getRGB(x, y)); Color mycol2 = new Color(inImage.getRGB(x, y)); int delta = mycol1.getRed() - mycol2.getRed(); score += (delta * delta); delta = mycol1.getGreen() - mycol2.getGreen(); score += (delta * delta); delta = mycol1.getBlue() - mycol2.getBlue(); score += (delta * delta); } }
My problem is that my code runs to a certain point, where it seems no matter what happens to the image, it doesn't seem to get any closer to the target image.
As implied by the title, when I am rendering images of the type "BufferedImage" unto a Swing application, the images' pixels are not consistent in size. Some might be larger than other, and some might be smaller than other.
Here is a screenshot of what I am talking about (you might need to zoom in a bit because the image is so small): [URL] ....
And here is also some code for you. The images are actually from a sprite sheet, which I first load in its entirety and then split up in an array.
Java Code:
public static BufferedImage sprites[]; ... public void loadSprites(){ try{ BufferedImage bigImage = ImageIO.read(new File("SOURCE/BLA/BLA/THIS/IS/ACTUALLY/NOT/THE/REAL/SOURCE/IN/CASE/YOU'RE/WONDERING/I/JUST/DON'T/WANT/YOU/TO/FIND/ME/AND/RAPE/ME")); sprites = new BufferedImage[16 * 16];
I've been working my way through a tutorial to build a simple 2D tile-based engine that also allows the code to manipulate the colour of pixels on the screen based on a monochrome map read from a file. I've got the code right line for line, but I seem to have a bug when it comes to draw to the screen! At regular intervals, despite what is held in the pixel array of ints (which I have confirmed to be correct when debugging), I get the same row of pixels being draw twice in a row. I figured there was some loop issue somewhere, but after attempting to debug this for some time, I haven't come up with the answer.
I am developing JavaFX application. I have requirement like that javafx application should be always on top. I could not find an option to make it always on top.
I know that oracle has released a statement saying that JavaFX will eventually replace Swing. What is the advantage of JavaFX? The new format, using "stage" instead of JFrame, seemed weird. Why is this change necessary? What benefit do we reap from JavaFX that Swing does not have?
I am using netbeans scenebuilder and I am a little confused on how I would convert my state capitals java code to a javaFX app.
public class StateCapitals { Scanner in; public static void main(String[] args) { readData(); } public static void readData() { // Location of file to read File file = new File("statecapitals.txt");
I've been on this for a while and for some reason I just can't seem to get this to work. I know my code is solid, but it won't display my image. I've tried swithcing the image to different directories and also using different image sizes and types. I even used Orcale's guide to display your image, but still no go! All I get is a blank canvas? There are no errors. I'm also running NetbeansIDE 8 that supports JavaFX and I made sure the project is a JavaFX Application project.
The homework called for me to display it three times - the first one regular, second resized, and the last one rotated. I even deleted the extra images in hope at least one appears.
I'm working on a project right now in JavaFX, and got stuck. I am drawing a path consisting of CubicCurveTo's and I wonder if there's any way to get the X and Y coordinates from certain parts of that path.
Imagine following a curve (path) with a pencil slowly, and every second you take note the X and Y coordinate. I mean I'm not interested in the control points or start and end points, but the points "in between", preferably at a certain interval.
I've searched for many things online, but have trouble knowing exactly which words to search for. "Paths" often bring up file paths, traversing, coordinates etc. all fail to give me any good results.
I tried to be as specific I could, and I don't think my current code is of any interest in this matter.
(The point of it all is that the path should simulate the path a person walks, and I will store the coordinates in a database for every second).
When i press a button, i want to create a new object in my window(that i have created using scenbuilder, so i have a FXML file and a Controller class). In the window where i have a create button, there are also some textfields where you are supposed to enter name and date.
What i want to do is take the input from the TextField and store is temporally in a String variable, Its this strings i want to take the data from when i create a new object on my View. When i try to do something with the TextFields i get multiple errors that i dont understand at all.
I know my code may be very un-structured the absolute right way, i know, but i dont have time reconstructing and trying to understanding new patterns .The object is the circle and the vertical line.
TimelineMainView Controller public class TimelineController{ StageClass sc = new StageClass(); NewTimelineController nt = new NewTimelineController();
I'm quite new to JavaFX, and currently struggling with navigation between views. I'll post the code and the stacktrace.
public class MainApp extends Application { private Stage primaryStage; private AnchorPane overviewPage; @Override public void start(Stage primaryStage) { this.primaryStage = primaryStage;
[Code] .....
Exception in thread "JavaFX Application Thread" java.lang.RuntimeException: java.lang.reflect.InvocationTargetException at javafx.fxml.FXMLLoader$MethodHandler.invoke(Unknown Source) at javafx.fxml.FXMLLoader$ControllerMethodEventHandler.handle(Unknown Source) at com.sun.javafx.event.CompositeEventHandler.dispatchBubblingEvent(Unknown Source) at com.sun.javafx.event.EventHandlerManager.dispatchBubblingEvent(Unknown Source)
How can I style my own nodes/controls doing this? Basically it amounts to asking how the selectors like ".column-header-background" are associated with sub-structures of my Java control/node objects. So suppose I have something like
.fancy-node .fred .label { ... }
How does JavaFX associate fancy-node and fred with something in my implementation of a Node/Control?
I'm using WebView to display an OpenLayers3 map, e.g. Animation example from openlayers.org. When I lock my screen and unlock it, none of the openlayers layers are re-drawn. Sometimes bringing the window in to focus or a small resize of the component will cause the map to go blank. This doesn't occur in any browser I've tested, so it seems to be a WebView specific issue, although it also seems to be layer specific and possibly cache related. I've only tested on Windows, 1.7.0_51 x64 and 1.8.0_05 x64 ....
There are a few things lacking in the TableView's keyboard navigation handlers. In tracing the code, the behavior is handled via TableViewBehavior and its super classes. If I want to augment that behavior, how do I do it?
Ideally, I would like to subclass TableViewBehavior, but I don't see how I can do it. This gets created in the TableViewSkin ctor:
public TableViewSkin(final TableView<T> tableView) { super(tableView, new TableViewBehavior<T>(tableView)); ... }
but as you can see there is no factory method to create the behavior class. If there was, I could subclass TableViewSkin and override the factory method.
At the end I just copy and paste the code from section 9.3.4 (the long startup task example) and it still won't work. After starting the application I only see some black screen flickering at the upper left screen and then the main app shows up.
What I have done:
Using Netbeans 8.0 under Linux(Fedora20 64bit), JDK 1.8u5 ...
On my machine I see only a little black flickering on the left upper screen and then immediately the app is shown...
The only way I can get this to run is to set the custom preloader property in the Netbeans-project properties. If you use a maven based project in Netbeans you did not got this option ...
With JSP can do? How do it? or exist other way? or: [URL] ....
I tested (i need some configuration): [URL] .... but this method download the jar file (and other libraries) right? and the program act same as a Desktop app, right?