6.3 颜色映射
人类的感知并不是为了观察灰度图像的细微变化而建立的。人类的眼睛对观察颜色之间的变化更敏感,所以你经常需要对你的灰度图像重新上色,以获得关于它们的线索。OpenCV现在提供了各种颜色映射,以增强计算机视觉应用程序中的可视化。
在OpenCV中,只需要applyColorMap就可以在给定的图像上应用颜色映射。
颜色映射包括如下:
Enumerator:cv::ColormapTypes | |
COLORMAP_AUTUMN Python: cv.COLORMAP_AUTUMN | autumn |
COLORMAP_BONE Python: cv.COLORMAP_BONE | bone |
COLORMAP_JET Python: cv.COLORMAP_JET | jet |
COLORMAP_WINTER Python: cv.COLORMAP_WINTER | winter |
COLORMAP_RAINBOW Python: cv.COLORMAP_RAINBOW | rainbow |
COLORMAP_OCEAN Python: cv.COLORMAP_OCEAN | ocean |
COLORMAP_SUMMER Python: cv.COLORMAP_SUMMER | summer |
COLORMAP_SPRING Python: cv.COLORMAP_SPRING | spring |
COLORMAP_COOL Python: cv.COLORMAP_COOL | cool |
COLORMAP_HSV Python: cv.COLORMAP_HSV | HSV |
COLORMAP_PINK Python: cv.COLORMAP_PINK | pink |
COLORMAP_HOT Python: cv.COLORMAP_HOT | hot |
COLORMAP_PARULA Python: cv.COLORMAP_PARULA | parula |
6.3.1 Opencv接口
void cv::applyColorMap(InputArray src,
OutputArray dst,
InputArray userColor
)
参数
src CV_8UC1或CV_8UC3类型的灰度或彩色源图像。
dst 目标图像是彩色映射的源图像。注意:Mat::create是在dst上调用的。
userColor 适用于CV_8UC1或CV_8UC3类型和大小为256的颜色映射
void ES::ImageProcessing::colorMapOper(cv::Mat* dst)
{
Mat temp = imread("lena.jpg", IMREAD_COLOR);
cv::resize(temp, temp, Size(temp.rows / 4 * 3, temp.cols / 4 * 3));
//转灰度图
cv::cvtColor(temp, temp, COLOR_BGR2GRAY);
cv::Mat src(temp.rows, temp.cols, CV_8UC3);
bool toRGB = false;
cv::cvtColor(temp, src, toRGB ? cv::COLOR_BGR2RGB : cv::COLOR_BGRA2BGR, src.channels());
ImageProcessingParams* img_params = static_cast<ImageProcessingParams*>(m_params);
ColormapTypes type = (ColormapTypes)img_params->m_colorMapType;
Mat mat;
src.copyTo(mat);
applyColorMap(src, mat, type);
Mat mergeMat(src.rows, src.cols + mat.cols, src.type());
Mat submat = mergeMat.colRange(0, src.cols);
src.copyTo(submat);
submat = mergeMat.colRange(src.cols, src.cols + mat.cols);
mat.copyTo(submat);
mergeMat.copyTo(*dst);
}