Вы смешиваете интерфейс C ++ (cv :: Mat) с интерфейсом C (IplImage), почему вы это делаете?
Mat *mat = new Mat(width, height, CV_8UC4);
Это утечка памяти, вы никогда не удаляете эту карту, такжепочти нет причин создавать Mat с новым - просто Mat mat(width, height, CV_8UC4)
отлично справляется с работой, и вам не нужно его удалять.
cvCvtColor(mat, rv, CV_RGBA2BGR);
cvCvtColor ожидает два IplImage*
s в качестве аргументов, выдайте ему cv::Mat*
и IplImage*
, это не может работать.Замените первый mat
на &iplImage
или просто последовательно используйте интерфейс c ++.