I guess you should specify better what different orientations mean. Do you mean small deformations? Or litterally the possibility of rotating an existing logo over 360°. This is in fact a big difference and both need totally other approaches.
As to your cascade model approach
- Using random negative BG images is actually not the best approach. Either you supply multiple thousands of negatives, which could average out the variation in the background or you use samples that have actual a meaning. Either way, 300 negatives will never give you good results if you are detecting the logo 'in the wild' which means in every possible situation. If you want to achieve that, go for example for 10.000 negatives.
- Using a single image and transform it to find the logo, only works in very controlled testing situations. It is way better to capture possible situations of the logo, annotate them as positives and use the other approach of openCV create samples to create the image vector. The transformation that are applied in your case create artificial structures which yields bad results. This is however badly documented...
- Also, using a logo of 100 x 30 pixels in size won't give you problems now, but once you go for like 5000 pos and 10.000 negatives, this will generate huge memory problems. The train cascade applications stores large amounts of data in memory, which isn't so good, but which limits it capabilities. Try reducing your size to for example 50 x 15 or even 25 x 7.
Hopefully these insights help out. Also, use the search button on this forum, look for cascade classification and train cascade and you will find tons of topics where people have gathered good information about this problem.