In this book, we visited a whole variety of machine learning tools and algorithms that OpenCV provides straight out of the box. And, if for some reason, OpenCV does not provide exactly what we are looking for, we can always fall back on scikit-learn.
However, when tackling more advanced problems, you might find yourself wanting to perform some very specific data processing that neither OpenCV nor scikit-learn provide, or you might want to make slight adjustments to an existing algorithm. In this case, you may want to create your own estimator.