SH7890
SH7890

Reputation: 555

opencv_createsamples "Assertion Failed" Error

I am trying to create a vec file from my positive image samples. I'm using the latest version of Opencv. The command I am using is this:

opencv_createsamples -info Positive.info -num 3750 -w 24 -h 24 -vec Positive.vec

All my images are bigger than 24x24, so I don't believe that that is the issue. I've tried searching online, but I don't find anyone with this error while doing the createsamples command. The output that I get when I run that is this:

Info file name: Positive.info
Img file name: (NULL)
Vec file name: Positive.vec
BG  file name: (NULL)
Num: 3750
BG color: 0
BG threshold: 80
Invert: FALSE
Max intensity deviation: 40
Max x angle: 1.1
Max y angle: 1.1
Max z angle: 0.5
Show samples: FALSE
Width: 24
Height: 24
Max Scale: -1
RNG Seed: 12345
Create training samples from images collection...
OpenCV: terminate handler is called! The last OpenCV error is:
OpenCV(4.0.0-alpha) Error: Assertion failed (0 <= roi.x && 0 <= roi.width && roi.x + roi.width <= m.cols && 0 <= roi.y && 0 <= roi.height && roi.y + roi.height <= m.rows) in cv::Mat::Mat, file c:\build\master_winpack-build-win64-vc15\opencv\modules\core\src\matrix.cpp, line 465

This is my first time using opencv, so I'm very unclear as to what this error is. Anyone have any experience with this or can point me in the right direction to correcting the error?

Upvotes: 0

Views: 2896

Answers (4)

Suman
Suman

Reputation: 364

I face the same issue now, if the num argument is less than 950 it works for me.

Upvotes: 0

Tushar Pathade
Tushar Pathade

Reputation: 31

This is Tushar Pathade, this error comes when your info.txt(file which contains information of objects to be detected) file contains some wrong information like image_name 1 0 0 0 0 or image_name 2 10 20 30 40. In first examples coordinates are (0,0,0,0) which is impossible while in second example no. of objects are 2 but coordinates of only one objects are mentioned.

So this lines produced this error. So first remove it and then run. You will not get any error then.

As priyanka mentioned above, this also need to take care of first but this will produced another error. It is nothing but image not found error. So to avoid it put info.txt file in a folder where negative images are. Basically u will see path in error so accordingly handle it. Thank you.

Upvotes: 3

chinmay patil
chinmay patil

Reputation: 71

I got the same error.

The error is about the bounding boxes, sometimes while creating bounding boxes you create a box outside the image pixel so that region is not get accepted and then you get this error.

Solution :

I used divide and conquer tech for this solution. What I did is I've created a new text file and in that text file I pasted some files from the original info or text file I ran the code if its creating samples then good if not then delete any one image from that text file run again*(run the create_samples again)*. do this until you get the clean file. I know this is too tedious task but this works.!

Thanks

Upvotes: 1

priyanka
priyanka

Reputation: 31

This is Priyanka. I was also getting the same error and I was trying to get resolution to it somehow. But I could not find anything on internet.

But I am able to solve the problem successfully. 2-3 things that were missing as below:

  1. I used opencv_annotation.exe to generate the -info (text file). This utility embeds complete image path into the file, where as the opencv_createsamples.exe expects that the images are present in the same folder as of the -info file. So what used to happen was the path of the image was getting concatenated with the path of the -info file. i.e Suppose -info file is available at D:\MyPath\DataSet\annotations.txt and the images are at D:\MyPath\DataSet\Vehicles\*.png. In this case, while executing the opencv_createsamples.exe, the complete image path becomes D:\MyPath\DataSet\D:\MyPath\DataSet\Vehicles\image000.png, which the utility is not able to find.

  2. So cater to the correct path kindly take care of below things

    • put the -info file in the same path as of images.
    • ensure that the -info file does not have the path for any image. It should contain only the

    <image name without complete path> <object instances> <x y, width height>

With this change the image path was taken correctly and my issue got resolved.

Try doing this. It may help you.

Upvotes: 3

Related Questions