As java библиотеки могут использоваться в scala; Таким образом, вы можете использовать java библиотеку [javax imageIO
] или [java awt
] или оба. Вы можете найти множество их примеров на inte rnet. Здесь я делюсь одним.
Ниже приведен пример кода для того же.
import org.opencv.core.Mat
import javax.imageio.ImageIO
import java.io.ByteArrayInputStream
import java.awt.image.DataBufferByte
import org.opencv.core.CvType
import org.opencv.core.Core
import org.opencv.features2d.FeatureDetector
import org.opencv.core.MatOfKeyPoint
import org.opencv.features2d.Features2d
import org.opencv.highgui.Highgui
import java.awt.image.BufferedImage
import java.io.File
object OpenCVOps {
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
def imageToMat(byteArray: Array[Byte]): MatSer ={
val bufferedImage = ImageIO.read(new ByteArrayInputStream(byteArray))
val mat = new Mat(bufferedImage.getHeight(), bufferedImage.getWidth(), CvType.CV_8UC3);
val data = bufferedImage.getRaster().getDataBuffer.asInstanceOf[DataBufferByte].getData();
mat.put(0, 0, data);
new MatSer(mat);
}
def matToImage(mat: Mat,file: String): Boolean ={
val imageType = BufferedImage.TYPE_3BYTE_BGR;
val image = new BufferedImage(mat.cols(),mat.rows(), imageType);
val x = image.getRaster.getDataBuffer.asInstanceOf[DataBufferByte].getData
mat.get(0,0,x)
val fileName = new File("file")
ImageIO.write(image, "jpg", fileName)
}
def detectFeatures(mat: Mat)
{
val featureDetector = FeatureDetector.create(FeatureDetector.SIFT)
val matKeyPoint = new MatOfKeyPoint()
featureDetector.detect(mat,matKeyPoint)
println(mat.get(0, 0))
println(matKeyPoint.toList())
//writeToImage(mat,matKeyPoint)
}
def writeToImage(mat: Mat, matKeyPoint: MatOfKeyPoint){
val outImage = new Mat()
Features2d.drawKeypoints(mat, matKeyPoint, outImage)
Highgui.imwrite("myfile.jpg",outImage)
}
}
Вот еще один пример ..
import javax.imageio.ImageIO
trait Settings {
this: com.jme3.app.SimpleApplication =>
protected val appSettings = new com.jme3.system.AppSettings(true)
Seq(
("Width", 1920)
, ("Height", 1080)
, ("BitsPerPixel", 32)
, ("Frequency", 60)
, ("DepthBits", 24)
, ("StencilBits", 0)
, ("Samples", 2)
, ("Fullscreen", false)
, ("Title", "LW3D")
, ("Renderer", com.jme3.system.AppSettings.LWJGL_OPENGL2)
, ("AudioRenderer", com.jme3.system.AppSettings.LWJGL_OPENAL)
, ("DisableJoysticks", true)
, ("UseInput", true)
, ("VSync", false)
, ("FrameRate", 0)
, ("SettingsDialogImage", "")
, ("MinHeight", 1920)
, ("MinWidth", 1080)
) foreach { case (k, v: Object) => appSettings.put(k, v) }
appSettings.setIcons(
List(
ImageIO.read(getClass.getClassLoader.getResource("Yx/logo/Y256.png")),
ImageIO.read(getClass.getClassLoader.getResource("Yx/logo/Y128.png")),
ImageIO.read(getClass.getClassLoader.getResource("Yx/logo/Y64.png")),
ImageIO.read(getClass.getClassLoader.getResource("Yx/logo/Y32.png")),
ImageIO.read(getClass.getClassLoader.getResource("Yx/logo/Y16.png"))
).toArray
)
setSettings(appSettings)
setShowSettings(false)
setDisplayFps(true)
setDisplayStatView(false)
setPauseOnLostFocus(false)
}