You are using two different interfaces to the MSER implementation.
Python cv2.MSER
gives you a wrapped cv::MSER
, which exposes its operator()
to Python as detect
:
//! the operator that extracts the MSERs from the image or the specific part of it
CV_WRAP_AS(detect) void operator()( const Mat& image, CV_OUT vector<vector<Point> >& msers,
const Mat& mask=Mat() ) const;
This gives you the nice list of contours interface you are looking for.
In contrast Java uses the javaFeatureDetector
wrapper which calls FeatureDetector::detect
which is backed by MSER::detectImpl
and uses the standard FeatureDetector interface: a list of KeyPoints.
If you want to access the operator()
in Java (in OpenCV 2.4) you will have to wrap it up in JNI.