簡體   English   中英

OpenCV無法加載動態Web項目的庫

[英]OpenCV unable to load library for a dynamic web project

我正在准備有關人臉識別的Java Web項目。我正在使用OpenCV 2.4.7的Java庫。 當我從servlet調用FaceDetector類時,它給出了錯誤-

java.lang.UnsatisfiedLinkError:java.library.path中沒有opencv_java247 java.lang.ClassLoader.loadLibrary(ClassLoader.java:1886)java.lang.Runtime.loadLibrary0(Runtime.java:849)java.lang.System.loadLibrary( System.java:1088)Models.NewFaceDetector。(NewFaceDetector.java:24)Servlets.helloServlet.doPost(helloServlet.java:108)javax.servlet.http.HttpServlet.service(HttpServlet.java:647)javax.servlet.http .HttpServlet.service(HttpServlet.java:728)

此代碼在控制台Java項目中運行良好。 Servlet代碼是-

protected void doPost(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {

    PrintWriter out=response.getWriter();
    Part name=request.getPart("NameBox");
    Part img=request.getPart("Img");
    String filename=getFileName(img);
    InputStream is=img.getInputStream();
    int i=is.available();
    byte[] b=new byte[i];
    is.read(b);
    String path="E:/temp/"+filename;
    FileOutputStream os=new FileOutputStream(path);
     os.write(b);
    os.close();
    is.close();
   FaceDetector fd=new FaceDetector();
    fd.getFaces(path);  
}

我的臉部偵測器課程是-

public class FaceDetector {

static{ System.loadLibrary("opencv_java247"); }
public List<Mat> getFaces(String url) throws MalformedURLException, IOException
{
    List<Mat>faces=new ArrayList();
    Mat image = Highgui.imread(url);
    //code...
}

我給出了打開cv dll的路徑--Djava.library.path =“ C:\\ Users \\ vivek \\ Documents \\ NetBeansProjects \\ TrendFaceRecognizer \\ src \\ java \\ data”

我不知道我在做什么。

如何解決java.lang.UnsatisfiedLinkError
用戶應檢查是否-

  • System.loadLibrary傳遞了錯誤的參數:

    • Windows:要加載Name.dll,會將Name傳遞給loadLibrary方法。

      AIX,HP-UX,Solaris,Linux:要加載libName.so或libName.a,必須傳遞libName
      到loadLibrary方法

  • 本機庫已加載-

    如果本機庫已經由應用程序加載並且相同
    應用程序嘗試再次加載它,這可能導致此錯誤。

  • 本機庫不存在於java.library.path或
    LD_LIBRARY_PATH

參考: 調試java.lang.UnsatisfiedLinkError

並在您的情況下,1)檢查您的servlet(可能在不同的程序包中)是否可以訪問\\ TrendFaceRecognizer \\ src \\ java \\ data中的dll。

2)代替System.loadLibrary(“ opencv_java247”)嘗試使用System.load(“ opencv_java247”)。似乎loadLibrary使用默認路徑,而load將使用絕對路徑

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM