하프빌런
20
2018-11-09 12:14:26 작성 2018-11-09 12:16:11 수정됨
2
1667

opencv_world341d.dll에 대해 기호가 로드되지 않음에 대해 질문드립니다.


안녕하세요

svm 을 이용한 물체인식을 진행중에있는데요


우선코드를보여드리겠습니다.

	Mat trainingData, labels;
	read_trainData("../ImageExam/SVMDATA.xml", trainingData, labels);

	Ptr<ml::SVM> svm = SVM_create(CV_TERMCRIT_ITER, 1000, 0);
	svm->train(trainingData, ml::ROW_SAMPLE, labels);

	//Ptr<ml::SVM> svm = ml::StatModel::load<ml::SVM>("../SVMtrain.xml");
	//Ptr<ml::SVM> svm = Algorithm::load<ml::SVM>("../SVMtrain.xml");

	Mat image = imread("../ImageExam/ImageProject/aeye/aeye013.bmp", 1);
	Mat img_resize;
	resize(image, img_resize, Size(128, 128), 0, 0, CV_INTER_LINEAR);

	CV_Assert(img_resize.data);
	Mat compare = img_resize.reshape(1, 1);
	compare.convertTo(compare, CV_32FC1);
	
	Mat result;
	svm->predict(compare, result);

svm을 이용한 학습이 되서 xml로 잘저장이 되는데 거기서 xml을 사용하는게 문제입니다.

콘솔에 나타나는 에러메세지는 

OpenCV(3.4.1) Error: Assertion failed (samples.cols == var_count && samples.type() == 5) in cv::ml::SVMImpl::predict, file C:\build\master_winpack-build-win64-vc14\opencv\modules\ml\src\svm.cpp, line 2005

이러하구요 
디버깅창에서 뜨는 메시지는



이러합니다. 

제가 시도해본바는 이렇습니다.
1. 프로젝트속성에 저 파일(dll)이 있는 폴더의 종속성을 추가시켜줬다.
2. 환경변수에 dll이 있는 곳을 추가시켜줬다.
3. 프로젝트 debug 폴더에 dll을 붙여넣기 하였다.
4. 학습을 하고 바로 predict 를 사용해보았다.
5. 학습을 하고 xml 로 저장후 xml을 로드해보았다.

위 결과 모두 똑같이 저 오류가 발생했습니다...정확히는 predict 하는 부분에서 저 에러가 뜹니다.
도저히 저 파일을 로드시킬수가없는데 혹시 해결법을 아시는분이 있을까요? 

감사합니다.
0
  • 답변 2

  • 해리보슈
    4
    2021-04-14 10:00:28

    저도 svm 사용해서 위와 같은 것 짜고 있는데 64bit에서 되던게 

    32bit로 바꾸니 정확히 위와 같은 메세지가 뜨고 있습니다.

    (연결해야하는 메인프로그램쪽이 32bit라....)

    혹시 문제 해결하셨나요?

  • 해리보슈
    4
    2021-04-14 16:12:06

    비쥬얼 스튜디오 다운 그레이드로 해결했습니다.


    17,15 다 안되고 10으로 하니 해결 되네요 문의 사항있으시면

    https://blog.naver.com/jjiangbbang로 오셔서 아무글에나 글남겨주세요

  • 로그인을 하시면 답변을 등록할 수 있습니다.