簡體   English   中英

使用 OpenCV 在 Java 中加載並行處理模塊時出錯

[英]Error loading parallel processing modules in Java using OpenCV

我正在嘗試使用 Java 中的 OpenCV 庫檢測圖像中的人臉。我使用的是 OpenCV 的 4.7.0-dev 版本。當我運行該程序時,出現以下錯誤:

[ INFO:0@0.885] global registry_parallel.impl.hpp:96 cv::parallel::ParallelBackendRegistry::ParallelBackendRegistry core(parallel): Enabled backends(3, sorted by priority): ONETBB(1000); TBB(990); OPENMP(980)
[ INFO:0@0.885] global plugin_loader.impl.hpp:67 cv::plugin::impl::DynamicLib::libraryLoad load C:\Users\ricar\OneDrive\Documentos\libraries\opencv\build\java\x64\opencv_core_parallel_onetbb470_64d.dll => FAILED
[ INFO:0@0.886] global plugin_loader.impl.hpp:67 cv::plugin::impl::DynamicLib::libraryLoad load opencv_core_parallel_onetbb470_64d.dll => FAILED
[ INFO:0@0.886] global plugin_loader.impl.hpp:67 cv::plugin::impl::DynamicLib::libraryLoad load C:\Users\ricar\OneDrive\Documentos\libraries\opencv\build\java\x64\opencv_core_parallel_tbb470_64d.dll => FAILED
[ INFO:0@0.886] global plugin_loader.impl.hpp:67 cv::plugin::impl::DynamicLib::libraryLoad load opencv_core_parallel_tbb470_64d.dll => FAILED
[ INFO:0@0.887] global plugin_loader.impl.hpp:67 cv::plugin::impl::DynamicLib::libraryLoad load C:\Users\ricar\OneDrive\Documentos\libraries\opencv\build\java\x64\opencv_core_parallel_openmp470_64d.dll => FAILED
[ INFO:0@0.887] global plugin_loader.impl.hpp:67 cv::plugin::impl::DynamicLib::libraryLoad load opencv_core_parallel_openmp470_64d.dll => FAILED
[ INFO:0@1.067] global ocl.cpp:1186 cv::ocl::haveOpenCL Initialize OpenCL runtime...
[ INFO:0@1.977] global ocl.cpp:1192 cv::ocl::haveOpenCL OpenCL: found 2 platforms
[ INFO:0@1.977] global ocl.cpp:984 cv::ocl::OpenCLExecutionContext::Impl::getInitializedExecutionContext OpenCL: initializing thread execution context
[ INFO:0@1.977] global ocl.cpp:994 cv::ocl::OpenCLExecutionContext::Impl::getInitializedExecutionContext OpenCL: creating new execution context...
[ INFO:0@2.571] global ocl.cpp:1012 cv::ocl::OpenCLExecutionContext::Impl::getInitializedExecutionContext OpenCL: device=NVIDIA GeForce MX230
[ INFO:0@2.571] global ocl.cpp:5370 cv::ocl::Context::Impl::__init_buffer_pools OpenCL: Initializing buffer pool for context@0 with max capacity: poolSize=0 poolSizeHostPtr=0

這是我的代碼。 我相信我的問題是安裝或配置問題。

import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.core.MatOfRect;
import org.opencv.core.Rect;
import org.opencv.core.Scalar;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;
import org.opencv.objdetect.CascadeClassifier;

class Main{

    public static void main(String[] args){
        
        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
        
        Mat image = Imgcodecs.imread("C:\\Users\\ricar\\Downloads\\DSC02281.JPG");
        
        CascadeClassifier classifier = new CascadeClassifier("C:\\Users\\ricar\\OneDrive\\Documentos\\workspace\\LearningJava\\src\\haarcascade_frontalface_default.xml");
        MatOfRect faceDetections = new MatOfRect();
        classifier.detectMultiScale(image, faceDetections);
        
        for(Rect rect : faceDetections.toArray()) {
            
            Imgproc.rectangle(image, rect, new Scalar(0, 0, 255));
            
        }
        Imgcodecs.imwrite("C:\\Users\\ricar\\Downloads\\output.jpg", image);
        
    }
    
}

錯誤消息表明問題出在 OpenCV 並行插件上。 這可能是由於 TBB 庫版本缺失或不兼容,OpenCV 將其用於並行處理。

您應該檢查您是否安裝了正確版本的 TBB,以及它是否位於包含在您系統的 PATH 環境變量中的目錄中。

暫無
暫無

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

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