I’ve no experience with OpenCV, so I’ll address only the second issue.
A thread needs a CPU to run (or a core which acts as a virtual CPU). So, you will never have more threads running in silmultaneous then the real number of cores available in the device.
Let’s assume you have a device with 2 cores and you split the work in 9 threads. The final result is that only 2 out of 9 threads will run in silmultaneous, while the remaining 7 will be in the queue waiting for their turn to have CPU.
As there is a cost in Thread creation and switching, the overall performance result would be worse then having only 2 threads.
If you are spliting the work between threads for performance reasons, don’t make more threads than the number of cores in the device.
I believe that most devices on market are limited to 1 or 2 cores …(from http://stackoverflow.com/questions/13791182/multithreading-in-android)
Intel claims Android is not ready for multi-core processors(from http://www.theinquirer.net/inquirer/news/2182710/intel-claims-android-ready-multi-core-processors)