|
|
|
@ -154,13 +154,14 @@ It is possible to store PNG images with an alpha channel using this function. To |
|
|
|
|
|
|
|
|
|
void createAlphaMat(Mat &mat) |
|
|
|
|
{ |
|
|
|
|
CV_Assert(mat.channels() == 4); |
|
|
|
|
for (int i = 0; i < mat.rows; ++i) { |
|
|
|
|
for (int j = 0; j < mat.cols; ++j) { |
|
|
|
|
Vec4b& rgba = mat.at<Vec4b>(i, j); |
|
|
|
|
rgba[0] = UCHAR_MAX; |
|
|
|
|
rgba[1] = saturate_cast<uchar>((float (mat.cols - j)) / ((float)mat.cols) * UCHAR_MAX); |
|
|
|
|
rgba[2] = saturate_cast<uchar>((float (mat.rows - i)) / ((float)mat.rows) * UCHAR_MAX); |
|
|
|
|
rgba[3] = saturate_cast<uchar>(0.5 * (rgba[1] + rgba[2])); |
|
|
|
|
Vec4b& bgra = mat.at<Vec4b>(i, j); |
|
|
|
|
bgra[0] = UCHAR_MAX; // Blue |
|
|
|
|
bgra[1] = saturate_cast<uchar>((float (mat.cols - j)) / ((float)mat.cols) * UCHAR_MAX); // Green |
|
|
|
|
bgra[2] = saturate_cast<uchar>((float (mat.rows - i)) / ((float)mat.rows) * UCHAR_MAX); // Red |
|
|
|
|
bgra[3] = saturate_cast<uchar>(0.5 * (bgra[1] + bgra[2])); // Alpha |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|