He estado tratando de agregar una imagen a una imagen grande en la posición deseada. Encontré una manera de agregar marca de agua en opencv haciendo addWeighted (src, alpha, water, -, dst, -), pero el problema es que tanto la marca de agua como la imagen de superficie deben ser de los mismos tamaños que yo no quiero.agregar una imagen pequeña de marca de agua a una imagen grande opencv4android
encontrado otra manera (supongo)
Mat srcMat = cvCanvasImage.submat(top/2, (top + height)/2, left/2, (left + width)/2);
Imgproc.cvtColor(mat, srcMat, Imgproc.COLOR_GRAY2BGR,4);
Pero no entiendo cómo hacer esto ??
Gracias ..
ACTUALIZACIÓN
Mat cvCanvasImage = Highgui.imread(Environment.getExternalStorageDirectory() + "/wallpapers/castle.jpg");
// Small watermark image
Mat cvWaterImage = Highgui.imread(Environment.getExternalStorageDirectory() +"/square.png");
Size canvasSize = cvWaterImage.size();
int rows = (int) canvasSize.height;
int cols = (int) canvasSize.width;
int left = 0;
int top = 0;
int width = rows;
int height = cols;
Rect ROI = new Rect(left, top, width, height);
Core.addWeighted(cvCanvasImage.submat(ROI), alpha, cvWaterImage, beta, 0, cvCanvasImage.submat(ROI));
//now it throws me this error
"error: (-209) The operation is neither 'array op array' (where arrays have the same size and the same number of channels), nor 'array op scalar', nor 'scalar op array' in function void cv::arithm_op(const cv::_InputArray&, const cv::_InputArray&, const cv::_OutputArray&, const cv::_InputArray&, int, void (**)(const uchar*, size_t, const uchar*, size_t, uchar*, size_t, cv::Size, void*), bool, void*)"
He aplicado su camino y he actualizado mi pregunta, eche un vistazo. gracias de todos modos por una respuesta rápida. – Khawar
lo resolvió, gracias – Khawar