灰度图转伪彩色图代码
2011-06-08 12:59
337 查看
主要功能是使灰度图中 亮度越高的像素点,在伪彩色图中对应的点越趋向于 红色;亮度越低,则对应的伪彩色越趋向于 蓝色;总体上按照灰度值高低,由红渐变至蓝,中间色为绿色。其对应关系如下图所示:
trackback: http://www.opencv.org.cn/forum/viewtopic.php?f=1&t=9476
void F_Gray2Color(CvMat* gray_mat, CvMat* color_mat) { if(color_mat) cvZero(color_mat); int stype = CV_MAT_TYPE(gray_mat->type), dtype = CV_MAT_TYPE(color_mat->type); int rows = gray_mat->rows, cols = gray_mat->cols; // 判断输入的灰度图和输出的伪彩色图是否大小相同、格式是否符合要求 if (CV_ARE_SIZES_EQ(gray_mat, color_mat) && stype == CV_8UC1 && dtype == CV_8UC3) { CvMat* red = cvCreateMat(rows, cols, CV_8U); // 红色分量 CvMat* green = cvCreateMat(rows, cols, CV_8U); // 绿色分量 CvMat* blue = cvCreateMat(rows, cols, CV_8U); // 蓝色分量 CvMat* mask = cvCreateMat(rows, cols, CV_8U); cvSubRS(gray_mat, cvScalar(255), blue); // blue = 255 - gray cvCopy(gray_mat, red); // red = gray cvCopy(gray_mat, green); // green = gray , if gray < 128 cvCmpS(green, 128, mask, CV_CMP_GE ); // cvSubRS(green, cvScalar(255), green, mask); // green = 255 - gray , if gray >= 128 cvConvertScale(green, green, 2.0, 0.0); // green = 2 * green // 将蓝绿红三色融合为一幅伪彩色图 cvMerge(blue, green, red, NULL, color_mat); cvReleaseMat( &red ); cvReleaseMat( &green ); cvReleaseMat( &blue ); cvReleaseMat( &mask ); } }
trackback: http://www.opencv.org.cn/forum/viewtopic.php?f=1&t=9476
相关文章推荐
- OpenCV将彩色图像转化为灰度图代码
- [小代码]转换彩色图为灰度图
- java实现彩色图转变为灰度图
- opencv生成彩色图c++代码实例及运行结果
- 解析C#彩色图像灰度化算法的实现代码详解
- 手把手教你设置 IntelliJ IDEA 的彩色代码主题
- opencv读取彩色/灰度图片像素值并存储在本地文件中c++代码实例及运行结果
- Qt 中彩色图像转换为灰度图
- 170608 python彩色代码打印与页眉文件完整路径设置
- JSP彩色验证码的实例代码
- android把彩色图像变成灰度图(黑白)
- 默认图片是灰色鼠标放上去变彩色css效果代码
- 使用secureCRT的时候,如何让vim编辑器显示彩色代码
- opencv生成彩色图c++代码实例及运行结果
- opencv读取彩色/灰度图片像素值并存储在本地文件中c++代码实例及运行结果
- 一种彩色验证码的代码
- 24位真彩色转换为8位灰度图片(完整代码)
- 彩色图转灰度图的原理和参考源码
- OPENCV入门教程三:cvtColor彩色图转灰度图
- 24位真彩色转为256灰度图