Я новичок в Обработка и обработка изображений. Мне нужно взять внутренние треугольные пиксели изображения. Для этого я использовал следующий код. К сожалению, я получаю нежелательные черные пиксели. избавиться от этой проблемы, я попытался удалить фоновые [0] пиксели, указав значение alfa. (tranparent background) Но он дает следующую ошибку. Любая помощь приветствуется.Извлечь пиксели изображения треугольника Ошибка
Мой код:
Mat img = cv::imread("/home/fabio/code/lena.jpg", cv::IMREAD_GRAYSCALE);
Mat alpha(img.size(), CV_8UC1, Scalar(0));
//triangle definition (example points)
vector<Point> points;
points.push_back(Point(200, 70));
points.push_back(Point(60, 150));
points.push_back(Point(500, 500));
//apply triangle to mask
fillConvexPoly(alpha, points, Scalar(255));
cv::Mat finalImage = cv::Mat::zeros(img.size(), img.type());
img.copyTo(finalImage, alpha);
imshow("image", finalImage);
Mat dst;
Mat rgb[1];
split(finalImage, rgb);
Mat rgba[2] = { finalImage, alpha };
merge(rgba, 2, dst);
imshow("dst", dst);
Ошибка: OpenCV Error: Bad количество каналов (Исходное изображение должно иметь 1, 3 или 4 канала) в cvConvertImage, файл C: \ строит \ 2_4_PackSlave-Win64-VC12 -shared \ OpenCV \ модули \ highgui \ SRC \ utils.cpp, строка 611
Ваше входное изображение загружается как оттенки серого, поэтому это не RGB, а только один канал. Добавление альфа-канала достигнет 2-канального изображения, которое невозможно отобразить. Имейте в виду, что openCV не будет корректно обрабатывать альфа-канал во время отображения с помощью imshow, поэтому лучше сохранить как .png, чтобы проверить функцию альфа-канала. – Micka