美好的一天!
我似乎无法在OpenCV中找到合适的术语。情况如下:
我有灰度图像和颜色(BGR)。
我想'申请'灰度图像的颜色,但保持亮度并保存后。
我最初的思考过程是:
这是我到目前为止所做的:
cv::Mat pixelColor(1, 1, CV_8UC3, cv::Scalar(0));
pixelColor.at<cv::Vec3b>(1, 1) = cv::Vec3b(128, 255, 0); // currently hard-coded but it actually comes from another source
cv::cvtColor(pixelColor, pixelColor, CV_BGR2Luv);
pixelColor.at<cv::Vec3b>(1, 1)[0] = image.at<unsigned char>(y, x);
cv::cvtColor(pixelColor, pixelColor, CV_Luv2BGR);
我遍历我的灰度图像的所有y和x。实际颜色来自其他地方,但它保证是BGR。
我的问题是:(1)这个过程的正确用语是什么? (2)我哪里错了?
答案 0 :(得分:0)
我想您可以将此流程称为频道切换或频道替换?您不需要显式迭代图像中的像素。
将你的LUV图像分割成一个Mats向量可能是最容易的。
vector<Mat> channels;
cv::split(LUVMAT,channels);
这会在向量中为您提供3个单通道Mats L,U和V.
然后使用标准矢量运算将矢量中的“L”Mat替换为灰度(单通道)Mat。最后,将结果合并回3通道Mat。
Mat newLuma;
cv::merge(temp,newLuma);
然后将“newLuma”转换回BGR。