1.伪色彩函数:applyColorMap()
在OpenCV库中,常见的伪色彩模式可以通过 applyColorMap(InputArray src, OutputArray dst, int colormap)直接调用。
1、函数说明:
(1)void applyColorMap(InputArray src, OutputArray dst, int colormap)
src: 源图像(灰度图或彩色图(CV_8UC1 or CV_8UC3))。
dst: 在源图像上进行色彩映射后的结果图像。
colormap:提供的色彩图代码值。(参见:ColormapTypes 枚举数据类型)
(2)void applyColorMap(InputArray src, OutputArray dst, InputArray userColor)
src: 源图像(灰度图或彩色图(CV_8UC1 or CV_8UC3))。
dst: 在源图像上进行色彩映射后的结果图像。
userColor:自定义的色彩(CV_8UC1 or CV_8UC3 and size 256)。
2、OpenCV 4.1.0 中定义了色彩图枚举数据类型:ColormapTypes(包含 20 种)。
说明:(1)在 imgproc.hpp 文件中定义。
//! GNU Octave/MATLAB equivalent colormaps
enum ColormapTypes
{
COLORMAP_AUTUMN = 0, //!< ![autumn](pics/colormaps/colorscale_autumn.jpg)
COLORMAP_BONE = 1, //!< ![bone](pics/colormaps/colorscale_bone.jpg)
COLORMAP_JET = 2, //!< ![jet](pics/colormaps/colorscale_jet.jpg)
COLORMAP_WINTER = 3, //!< ![winter](pics/colormaps/colorscale_winter.jpg)
COLORMAP_RAINBOW = 4, //!< ![rainbow](pics/colormaps/colorscale_rainbow.jpg)
COLORMAP_OCEAN = 5, //!< ![ocean](pics/colormaps/colorscale_ocean.jpg)
COLORMAP_SUMMER = 6, //!< ![summer](pics/colormaps/colorscale_summer.jpg)
COLORMAP_SPRING = 7, //!< ![spring](pics/colormaps/colorscale_spring.jpg)
COLORMAP_COOL = 8, //!< ![cool](pics/colormaps/colorscale_cool.jpg)
COLORMAP_HSV = 9, //!< ![HSV](pics/colormaps/colorscale_hsv.jpg)
COLORMAP_PINK = 10, //!< ![pink](pics/colormaps/colorscale_pink.jpg)
COLORMAP_HOT = 11, //!< ![hot](pics/colormaps/colorscale_hot.jpg)
COLORMAP_PARULA = 12, //!< ![parula](pics/colormaps/colorscale_parula.jpg)
COLORMAP_MAGMA = 13, //!< ![magma](pics/colormaps/colorscale_magma.jpg)
COLORMAP_INFERNO = 14, //!< ![inferno](pics/colormaps/colorscale_inferno.jpg)
COLORMAP_PLASMA = 15, //!< ![plasma](pics/colormaps/colorscale_plasma.jpg)
COLORMAP_VIRIDIS = 16, //!< ![viridis](pics/colormaps/colorscale_viridis.jpg)
COLORMAP_CIVIDIS = 17, //!< ![cividis](pics/colormaps/colorscale_cividis.jpg)
COLORMAP_TWILIGHT = 18, //!< ![twilight](pics/colormaps/colorscale_twilight.jpg)
COLORMAP_TWILIGHT_SHIFTED = 19 //!< ![twilight shifted](pics/colormaps/colorscale_twilight_shifted.jpg)
};
2.逻辑操作
就是位运算:
//与
bitwise_and(src1, src2, dst); //src1 src2都是源文件 dst目标文件
//或
bitwise_or(src1, src2, dst); //src1 src2都是源文件 dst目标文件
//非或者取反image=~image;
bitwise_not( src, dst); //src都是源文件 dst目标文件
//异或
bitwise_xor(src1, src2, dst); //src1 src2都是源文件 dst目标文件
3.通道分离与合并
一个彩色图像由三个通道组成,一个通道就是一个灰度图,然后进行混合,组成不同的颜色
//通道分离合并
std::vector<Mat>mv;
//分离
split(src, mv);
imshow("蓝色", mv[0]);
imshow("绿色", mv[1]);
imshow("红色", mv[2]);
Mat t;
mv[1] = mv[2] = 0;
//合并
merge(mv, t);
imshow("合并蓝色", t);
3.1.mixChannels()的使用方法
原型:
void cv::mixChannels ( const Mat * src,
size_t nsrcs,
Mat * dst,
size_t ndsts,
const int * fromTo,
size_t npairs
)
代码解释是:
第一个参数输入对象,可以是一个,也可以是多个。如果是多个请传入数组对象。
第二个参数输入对象的个数,也就是参数1中的数组中元素的个数
第三个参数输出对象,可以是一个,也可以是多个,如果是多个请传入数组。
第四个参数是输出对象的个数
第五个参数是混合数组。
第六个参数是通道数
// bgra[0] -> bgr[2], bgra[1] -> bgr[1],
// bgra[2] -> bgr[0]
int from_to[] = { 0,2, 1,1, 2,0};
mixChannels( &bgra, 1, out, 2, from_to, 3 );