I am currently working with a package that was put out by the University of
Maine that controls a framegrabber via java using mathematica. However, I
need to envoke the same set of java files he is using in matlab. I need to
know how to bring in the java methods and how to access the variables (like he
does, using Module etc). The documentation I have found from mathworks is
extremely limited and I was unable to make clear sense of it. Thanks
Craig Roush
Here is the mathematica code:
(* Title: RIVA : Real-time Image Viewing and Acquisition *)
(* Author: Susan Jarmuz and Mariusz Jankowski. E - mail : m...@usm.maine.edu *) (* Summary: This package provides
camera connectivity, frame initialization, and the functionality of Snap and
SnapArea. *) (* Package Version: 2.1 *)
(* Release Notes: Ver 0.15
Sep 2001 for JLink 1.1.2 Ver
0.21 Oct 2001 for JLink 1.1.2
Ver 0.25 Nov 2001 for JLink 1.1.2 Ver 1.00 Dec 2001 for JLink 1.1.2
*) (* Mathematica Version:
4.1 *)
(* Copyright: Copyright 2001, Susan Jarmuz and Mariusz Jankowski. All rights reserved. *)
(**************************************** Package
****************************************)
BeginPackage["RIVA`"]
<<Jlink`
(* Usage Section *)
RIVAInitialize::usage = "RIVAInitialize[] loads the RIVA graphical user
interface and initializes its functionality."; RIVASnap::usage =
"RIVASnap[] acquires a live image from the attached camera and returns an array
of dimensions 1026-by-1296. RIVASnap[x, y, dx, dy] returns an array of
dimensions dy-by-dx."; ZoomFactor::usage = "This option for RIVASnap[] sets
the x and y direction zoom factors for the camera. Valid zoom factors are
{1,2,4,8}. Default ZoomFactor -> {1,1}."; RIVAClose::usage =
"RIVAClose[] closes the graphical user interface and deinitializes the
camera." $RIVAFrame::usage = "Internal RIVA variable."
(*- Code Section *)
Begin["`Private`"]
Width = 1296; Height = 1026;
Options[RIVASnap] = ZoomFactor -> {1, 1} RIVASnap::ZoomFactorErrorMsg
= "Incorrect ZoomFactor value. Allowable values for ZoomFactor are
{1,2,4,8}." RIVASnap::OutOfImageRange= "Selected image sub-area is outside
of the zoomed image range."; RIVAInitialize[] :=
Module[{frame}, InstallJava[CommandLine
-> "javaw"]; %
InstallJava[] launches the Java runtime and prepares it to % be used from
Mathematica. InstallJava has a number of % options to control the
name of the Java runtime program, % the classpath used,
etc. Only one Java runtime is ever % launched; subsequent
calls to InstallJava after the first % have no effect.
frame = JavaNew["MainFrame", "RIVA V1.0"];
%Constructor: In Java the usage would be MyClass obj = new MyClass(args)
frame@validate[]; JavaShow[frame]; $RIVAFrame = frame;]
RIVASnap[opts___?OptionQ] := JavaBlock[Module[{xzoom, yzoom}, {xzoom,yzoom} = ZoomFactor /. Flatten[{opts}] /.
Options[RIVASnap]; If[MemberQ[{{1,1}, {1, 2}, {1, 4},
{1, 8}, {2, 1}, {2, 2}, {2, 4}, {2,8}}, {xzoom, yzoom}], Reverse[Partition[$RIVAFrame@snapImage[xzoom,
yzoom], Width/xzoom]],
Message[RIVASnap::ZoomFactorErrorMsg]; Return[$Failed]]]] RIVASnap[x_, y_, dx_, dy_,
opts___?OptionQ] := JavaBlock[Module[{xzoom, yzoom},
{xzoom,yzoom} = ZoomFactor /. Flatten[{opts}] /. Options[RIVASnap];
If[(x+dx<Width/xzoom)&&(y+dy<Height/yzoom), If[MemberQ[{{1,1}, {1, 2}, {1, 4}, {1, 8}, {2, 1}, {2, 2},
{2, 4}, {2,8}}, {xzoom, yzoom}], Reverse[Partition[$RIVAFrame@snapImageArea[x,
y, dx, dy, xzoom, yzoom],dx]],
Message[RIVASnap::ZoomFactorErrorMsg]; Return[$Failed]],
Message[RIVASnap::OutOfImageRange];Return[$Failed]]]]
RIVAClose[] := JavaBlock[Module[{}, $RIVAFrame@closeRIVA[];
$RIVAFrame@dispose[]]] End[]
EndPackage[]
Print["RIVA has been loaded successfully."]
|