我学习下面的代码与3个通道,但是当我尝试将其转换为4个通道拿给我衬上的图像,下面的代码工作的3通道图像如何使用图像4个通道
void Vignette(Mat&img, Mat &out) {
Mat a, b, c, d, f;
double sigma = 280; // vignette 'aperture', the param to play with
a = getGaussianKernel(img.cols, sigma, CV_32F);
b = getGaussianKernel(img.rows, sigma, CV_32F);
c = b * a.t();
double minVal;
double maxVal;
cv::minMaxLoc(c, &minVal, &maxVal);
d = c/maxVal;
d.convertTo(d, CV_8U, 255);
cvtColor(d, d, COLOR_GRAY2RGB);
d.convertTo(d, CV_32F, 1.0/255);
multiply(img, d, out, 1, CV_8U);
}
但我尝试了4通道拿给我衬,4通道代码如下
void Vignette(Mat&img, Mat &out) {
Mat a, b, c, d, f;
double sigma = 280; // vignette 'aperture', the param to play with
a = getGaussianKernel(img.cols, sigma, CV_32F);
b = getGaussianKernel(img.rows, sigma, CV_32F);
c = b * a.t();
double minVal;
double maxVal;
cv::minMaxLoc(c, &minVal, &maxVal);
d = c/maxVal;
d.convertTo(d, CV_8UC4, 255);
cvtColor(d, d, COLOR_GRAY2RGBA);
d.convertTo(d, CV_32F, 1.0/255);
multiply(img, d, out, 1, CV_8UC4);
}
你能显示输入和输出图像吗? – AldurDisciple 2014-10-05 10:28:01