提问人:Asif khAn 提问时间:11/17/2023 最后编辑:Christoph RackwitzAsif khAn 更新时间:11/17/2023 访问量:39
线程“main”java.lang.UnsatisfiedLinkError 中的异常:org.opencv.imgcodecs.Imgcodecs.imread_1(Ljava/lang/String;)J
Exception in thread "main" java.lang.UnsatisfiedLinkError: org.opencv.imgcodecs.Imgcodecs.imread_1(Ljava/lang/String;)J
问:
我是openCV的新手,我想在Intellij IDEA(Scala)中使用openCV来检测图像模糊。
我正在使用库依赖 openpnp-opencv
以下是版本详细信息。
Ubuntu 版本 22.04.3 LTS
Scala 版本 12.13.1
SBT 版本 1.9.6
这是我的build.sbt
ThisBuild / version := "0.1.0-SNAPSHOT"
ThisBuild / scalaVersion := "2.13.4"
lazy val root = (project in file("."))
.settings(
name := "FaceRecognitionAndComparison"
)
libraryDependencies ++= Seq("org.openpnp" % "opencv" % "4.5.1-1")
这是我的 FaceRecognition.scala
import org.opencv.core.{Core, CvType, Mat, MatOfDouble}
import org.opencv.imgcodecs.Imgcodecs
import org.opencv.imgproc.Imgproc
object FaceRecognition extends App {
def isImageBlurry(imagePath: String): Boolean = {
val image: Mat = Imgcodecs.imread(imagePath)
val grayImage: Mat = new Mat()
Imgproc.cvtColor(image, grayImage, Imgproc.COLOR_BGR2GRAY)
val laplacian: Mat = new Mat()
Imgproc.Laplacian(grayImage, laplacian, CvType.CV_64F)
println(laplacian)
val meanStdDevResult: MatOfDouble = new MatOfDouble()
val stdDev: Double = meanStdDevResult.toArray()(1)
val threshold: Double = 100.0
stdDev < threshold
}
System.loadLibrary(Core.NATIVE_LIBRARY_NAME)
val imagePath = "/home/Pictures/Screenshots/Screenshot.png"
if (isImageBlurry(imagePath)) {
println("The image is blurry.")
} else {
println("The image is not blurry.")
}
}
不幸的是,构建出现错误
Exception in thread "main" java.lang.UnsatisfiedLinkError: org.opencv.imgcodecs.Imgcodecs.imread_1(Ljava/lang/String;)J
at org.opencv.imgcodecs.Imgcodecs.imread_1(Native Method)
at org.opencv.imgcodecs.Imgcodecs.imread(Imgcodecs.java:320)
at FaceRecognition$.isImageBlurry(FaceRecognition.scala:65)
我尝试过从它的官方网站下载并安装 openCV,这是 https://docs.opencv.org/4.x/d7/d9f/tutorial_linux_install.html。
之后,我在代码中添加了以下行来加载 jar 文件,但这并没有解决我的问题。System.load("/home/build/bin/opencv-480.jar")
然后我在项目模块中添加了jar文件(文件->项目结构->模块->点击加号->添加opencv-480.jar->应用->确定),这次我得到了一个错误,这是
Exception in thread "main" java.lang.UnsatisfiedLinkError: no opencv_java470 in java.library.path: [/usr/java/packages/lib, /usr/lib64, /lib64, /lib, /usr/lib]
at java.base/java.lang.ClassLoader.loadLibrary(ClassLoader.java:2662)
at java.base/java.lang.Runtime.loadLibrary0(Runtime.java:827)
at java.base/java.lang.System.loadLibrary(System.java:1871)
at FaceRecognition$.delayedEndpoint$FaceRecognition$1(FaceRecognition.scala:83)
指导我如何解决此错误并在 (Intellij IDEA) scala 中实现 openCV。
答: 暂无答案
评论
System.load("/home/build/bin/opencv-480.jar")