I want to collect training samples from images.  

That can mean different things depending on the context. I think of the simplest case, which should be most commonly required. Because it is so common, there may be a standard tool for it.  

An example would be to have a collection of images of random street scenes and manually collect images of nonoccluded cars from them into separate files.

What is a common way or tool to do this:

For a large number of images, select one or more rectangles (of arbitrary size and with edges parallel to the image edges) in the image and save them to separate image files.

Of course, it can be done with any general image editing program, but in this case, most of the work time would be used for opening new images, closing old images, saving sample images and the most time-consuming part of entering a non-conflicting file name for the individual sample image files.  
For small numbers of samples per input file, this may need about an order of magnitude more time, and also more complex interaction.