OpenCV 오류: 잘못된 인수(새로운 양성 샘플을 얻을 수 없습니다. 가장 가능한 이유는 불충분합니다.

训练报错:
OpenCV 오류: 잘못된 인수(새 양성 샘플을 얻을 수 없습니다. 가장 가능한 이유는 주어진 vec 파일의 샘플 수가 충분하지 않기 때문입니다.) get, 파일 /home/opencv-.1.0/apps/traincascade/imagestorage.cpp, 'cv::Exception' 인스턴스를 던진 후 호출된 157행 종료 what(): /home/opencv-3.1.0/apps/traincascade/images torage.cpp:157: 오류: (-5) 새 양성 샘플을 가져올 수 없습니다. 가장 가능한 이유는 주어진 vec 파일의 샘플 수가 충분하지 않기 때문입니다.
 함수에서 get

폐기됨(코어 덤프됨)
 

정보를 찾아보니 기본적으로 NumPos 설정이 너무 크다고 합니다.(그런데 몇 번 numPos 조정을 시도했지만 여전히 오류가 보고되었습니다.) 내 훈련 명령문의 매개변수는 다음과 같습니다.

 opencv_traincascade -데이터 분류자 -vec samples.vec -bg negatives.txt\
   -numStages 20 -minHitRate 0.999 -maxFalseAlarmRate 0.5 -numPos 1000\
   -numNeg 600 -w 80 -h 40 -mode ALL -precalcValBufSize 1024\
   -pre calcIdxBufSize 1024
이 단락은 내가 직접 복사하여 붙여넣은 github 프로젝트의 소스 코드 단계입니다. 정보에 따라 numPos 1000을 500으로, numNeg 600을 300으로 변경했지만 여전히 오류가 발생했습니다.

해결 방법:
나중에 "-w 80 -h 40"이 positive 샘플의 너비와 높이를 각각 나타낸다는 것을 알았는데 생각해보니 내 positive 샘플 이미지는 모두 20×20이고 명령 매개변수를 "-w 20 -h 20"으로 다음과 같이 설정하려고 했습니다.

perl bin/createsamples.pl positives.txt negatives.txt 샘플 1500\
   "opencv_createsamples -bgcolor 0 -bgthresh 0 -maxxangle 1.1\
   -maxyangle 1.1 maxzangle 0.5 -maxidev 40 -w 20 -h 20"
opencv_traincascade -data classifier -vec samples.vec -bg negatives.txt\
   -numStages 20 -minHitRate 0.999 -maxFalseAlarmRate 0.5 -numPos 500\
   -numNeg 300 -w 20 -h 20 -mode ALL -precalcValBufSize 1024\
   -precalcIdxBufSize 1024
성공통

최근 추가: 포지티브 샘플 이미지의 너비와 높이 비율이 위의 w와 h의 비율과 반드시 ​​같아야 하는 것이 아니라 같아야 한다는 정보를 보았습니다.
 

https://blog.csdn.net/weixin_39388032/article/details/118175930

opencv_traincascade.exe를 실행하여
첫 번째 레이어를 훈련한 후 오류가 발생합니다.

OpenCV: 종료 핸들러가 호출되었습니다!마지막 OpenCV 오류:
OpenCV(3.4.6) 오류: 잘못된 인수(> 새로운 양성 샘플을 얻을 수 없습니다. 
가장 가능한 이유는 주어진 vec-file의 샘플 수가 충분하지 않기 때문입니다.
1
2
3
이 문제는 주로 numPos 값이 올바르게 설정되지 않았기 때문입니다. 그들은 단순히 numPos를
양성 샘플로 해석하고, 저는 항상 그렇게 생각하여 numPos 값이 vec 샘플을 생성한 num 번호와 정확히 동일하게 됩니다. ;

이것은 잘못된 것입니다. numPos의 값을 제한하는 공식이 있습니다.

vec-file number >= (numPos + (numStages-1) * (1 – minHitRate) * numPos) + S 1
vec
-file number: vec 파일 생성을 위한 positive 샘플의 num S: vec 파일을 생성할
때 negative 샘플의 총 개수를 나타내는가?
(여기서 S는 배경으로 바로 인식할 수 있는 vec-file의 샘플 수입니다.)

실제 측정 후 몇 가지 확인 사항이 있습니다:
1. 과연 numPos의 문제입니다; 2. numPos는 num 수 설정 및 생성된 vec
파일보다 작아야 합니다. 수정하면 위를 참조하여 NumPos의 값을 줄일 수 있습니다
.  blog.csdn.net/sazass/article/details/100275777

Guess you like

Origin blog.csdn.net/qq_42672770/article/details/131924332