This is the proxy class for passing read-only input arrays into OpenCV functions. It is defined as
typedef const _InputArray& InputArray;
where _InputArray is a class that can be constructed from Mat, Mat_<T>, Matx<T, m, n>, std::vector<T>, std::vector<std::vector<T> > or std::vector<Mat>. It can also be constructed from a matrix expression.
Im pretty sure all I have to know about the type is here. I suspect the _inputArray& means the whole class can be represented as a pointer and thats why an int type can be cast into it. But the whole blackened part puzzles me so im not sure.
If someone could go over this problem it could really help. Preferably with as least advanced c++ wording as possible :)