mollysoda 2022-02-07 03:52 采纳率: 100%
浏览 78
已结题

opencv找不到文件(文件存在但找不到,如何解决?(语言-java)

问题遇到的现象和发生背景

processing(java模式)调用自己做的opencv库(照着书 Pro Processing for Images and Computer Vision with OpenCV 写的cvimage),用作者写的代码做测试(面部特征点识别 Face landmark detection in OpenCV Face module with Processing – Magic & Love Interactive ),结果提示 56: error: (-5:Bad argument) No file with given name found.Aborting.... in function 'cv::face::FacemarkKazemiImpl::loadModel' 程序无法运行,但是目录下文件是存在的(文件名也是对的)

img

问题相关代码,请勿粘贴截图
import cvimage.*;
import org.opencv.core.*;
import org.opencv.core.Core;
import org.opencv.face.Face;
import org.opencv.face.Facemark;
import org.opencv.face.EigenFaceRecognizer;

final int W = 300, H = 300;

PImage img1, img2;
String faceFile, modelFile;
//EigenFaceRecognizer fr;
Facemark fm;
PVector offset;

public void settings() {
  size(W*2, H);
}

public void setup() {
  System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
  println(Core.VERSION);
  img1 = loadImage("george.jpg");
  img2 = loadImage("daniel.jpg");
  faceFile = "haarcascade_frontalface_default.xml";
  modelFile = "face_landmark_model.dat";
  fm = Face.createFacemarkKazemi();
  fm.loadModel(dataPath(modelFile));
  offset = new PVector(img1.width, 0);
  noLoop();
}

public void draw() {
  background(0);
  image(img1, 0, 0);
  ArrayList<MatOfPoint2f> shapes = detectFacemarks(img1);
  PVector origin = new PVector(0, 0);
  for (MatOfPoint2f sh : shapes) {
    Point [] pts = sh.toArray();
    drawFacemarks(pts, origin);
  }
  image(img2, offset.x, offset.y);
  shapes.clear();
  shapes = detectFacemarks(img2);
  for (MatOfPoint2f sh : shapes) {
    Point [] pts = sh.toArray();
    drawFacemarks(pts, offset);
  }
}

private ArrayList<MatOfPoint2f> detectFacemarks(PImage i) {
  ArrayList<MatOfPoint2f> shapes = new ArrayList<MatOfPoint2f>();
  CVImage im = new CVImage(i.width, i.height);
  im.copyTo(i);
  MatOfRect faces = new MatOfRect();
  Face.getFacesHAAR(im.getBGR(), faces, dataPath(faceFile)); 
  if (!faces.empty()) {
    fm.fit(im.getBGR(), faces, shapes);
  }
  return shapes;
}

private void drawFacemarks(Point [] p, PVector o) {
  pushStyle();
  noStroke();
  fill(255);
  for (Point pt : p) {
    ellipse((float)pt.x+o.x, (float)pt.y+o.y, 3, 3);
  }
  popStyle();
}

运行结果及报错内容

4.1.2
CvException: cv::Exception: OpenCV(4.1.2) D:\Users\87552\Documents\opencv\opencv_contrib-4.1.2\modules\face\src\getlandmarks.cpp:56: error: (-5:Bad argument) No file with given name found.Aborting.... in function 'cv::face::FacemarkKazemiImpl::loadModel'

  • 写回答

2条回答 默认 最新

  • 爱晚乏客游 2022-02-07 10:04
    关注

    据我猜测,contribut包需要编译的吧,没有编译不能直接使用的,除非你把它当成另外的cpp文件而不是opencv的组件来使用(我也不确定当成另外的cpp文件能不能行的通,但是编译是没有问题的)

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
  • 有问必答小助手 2022-02-21 14:16
    关注
    您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
    PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 3月1日
  • 已采纳回答 2月21日
  • 创建了问题 2月7日

悬赏问题

  • ¥20 C语言字符串不区分大小写字典排序相关问题
  • ¥15 关于#python#的问题:我希望通过逆向技术爬取1688搜索页下滑加载的数据
  • ¥15 学习C++过程中遇到的问题
  • ¥15 关于Linux的终端里,模拟实现一个带口令保护的屏保程序遇到的输入输出的问题!(语言-c语言)
  • ¥15 学习C++过程中遇到的问题
  • ¥15 请问,这个嵌入式Linux系统怎么分析,crc检验区域在哪
  • ¥15 二分类改为多分类问题
  • ¥15 Unity微信小游戏上调用ReadPixels()方法报错
  • ¥15 如何通过求后验分布求得样本中属于两种物种其中一种的概率?
  • ¥15 q从常量变成sin函数,怎么改写python代码?