简化色彩的用处:当待检索的图像与图像库中的图像在颜色撒谎能够存在一定的色彩差异时,系统能自动忽略在一定范围内的色彩差异,将在一定色彩差异范围内的图像划分为同一组,使其具有相同(相近)的特征值。

可以将颜色减少为8种,15种,64种不同的等级。

经过灰度化,当前色彩是256级,即每一个像素的值可能是0~255,经过简化色彩后,图像的灰度级可固定在一个更小的范围,如8级。

代码如下图所示:

#include <opencv2/opencv.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <stdio.h>using namespace cv;int main()
{Mat srcImage = imread("1.jpg");int mm=8, nn=8;//mm,nn为缩小后图像的大小。int cc=64; //cc为图像简化色彩后的灰度级数。int t[8 * 8];namedWindow("原图");imshow("原图", srcImage);cvtColor(srcImage, srcImage, CV_BGR2GRAY);  //图像化为灰度namedWindow("灰度原图");imshow("灰度原图", srcImage);cv::Size dsize = Size(mm, nn);cv::resize(srcImage, srcImage,dsize);namedWindow("灰度缩小");imshow("灰度缩小", srcImage);Mat Feature(mm, nn, CV_32SC1, Scalar::all(0));int i, j;int M = srcImage.rows;int N = srcImage.cols;for (i = 0; i<M; i++)for (j = 0; j<N; j++){Feature.at<int>(i / (M / mm), j / (N / nn)) = Feature.at<int>(i / (M / mm), j / (N / nn)) + srcImage.at<uchar>(i, j);// Feature.at<uchar>(i/(M/8),j/(N/8))+=m.at<uchar>(i,j);}//测试:看看缩小后,图像里面的每个像素值是多少:for(i=0;i<mm;i++)for (j = 0; j < nn; j++)printf_s("缩小后,图像里面的每个像素值(%d,%d)%d   \n", mm, nn, Feature.at<int>(i, j));printf_s("end\n");//简化色彩。当前灰度级为8位,即256色,将其处理为cc色。//这里设置cc=64for (i = 0; i<mm; i++)for (j = 0; j<nn; j++)Feature.at<int>(i, j) /= (256 / cc);//测试:看看简化色彩后,图像内里面的每个像素值是多少:for(i=0;i<mm;i++)for (j = 0; j < nn; j++)printf_s("简化色彩后,图像内里面的每个像素值是多少(%d,%d):%d   \n", mm, nn, Feature.at<int>(i, j));//第3步:计算图像的平均值。double sum, aver;sum = 0;for (i = 0; i<mm; i++)for (j = 0; j<nn; j++)sum += Feature.at<int>(i, j);aver = sum / (mm*nn);printf_s("sum=%lf,aver=%lf",sum,aver);waitKey();return 0;
}

运行结果如下:

图像处理之简化色彩(含OpenCV代码)相关推荐

  1. 计算特征矩阵及哈希值(含OpenCV代码)

    将简化色彩后的特征图像中每个像素依次与当前图像像素平均值进行比较 程序代码如下: #include <opencv2/opencv.hpp> #include <opencv2/hi ...

  2. 图像处理库(fbc_cv):源自OpenCV代码提取

    在实际项目中会经常用到一些基本的图像处理操作,而且经常拿OpenCV进行结果对比,因此这里从OpenCV中提取了一些代码组织成fbc_cv库.项目fbc_cv所有的代码已放到GitHub中,地址为   ...

  3. 基于Qt的代码加速(含Opencv)

    一.使用OpenGL对Opencv进行加速 1. 什么是OpenGL? OpenCL 是一个用于异构平台(heterogeneous platform)下编写并行程序的框架. OpenCL 的开发者可 ...

  4. 图像特征检测描述(一):SIFT、SURF、ORB、HOG、LBP特征的原理概述及OpenCV代码实现

    图像处理开发需求.图像处理接私活挣零花钱,请加微信/QQ 2487872782 图像处理开发资料.图像处理技术交流请加QQ群,群号 271891601 什么叫特征检测?就是检测图像中目标的特征呗,所谓 ...

  5. COI实验室技能:常见的图像增强算法(含MATLAB代码)

    COI实验室技能:常见的图像增强算法(含MATLAB代码)   成像系统采集到的图片有时不一定具有很好的图像质量,往往需要进行一些图像增强的操作.本文主要整理了几种常见的图像增强算法,包括:同态滤波. ...

  6. [转]-Snake模型openCV代码

    Snake模型&&openCV代码 出处:http://blog.csdn.net/hongxingabc/article/details/51606520        主动轮廓线模 ...

  7. 利用MOG2背景模型提取运动目标的OpenCV代码

    图像处理开发需求.图像处理接私活挣零花钱,请加微信/QQ 2487872782 图像处理开发资料.图像处理技术交流请加QQ群,群号 271891601 前面已经写了一篇博文介绍背景建模,详情可见:运动 ...

  8. 利用MSER算法提取图像区域(车牌区域)的OpenCV代码~

    图像处理开发需求.图像处理接私活挣零花钱,请加微信/QQ 2487872782 图像处理开发资料.图像处理技术交流请加QQ群,群号 271891601 我的博客中前面已经写了两种方法来实现车牌区域的提 ...

  9. 利用颜色和形态学两种方法进行车牌区域提取的OpenCV代码

    图像处理开发需求.图像处理接私活挣零花钱,请加微信/QQ 2487872782 图像处理开发资料.图像处理技术交流请加QQ群,群号 271891601 2016-7-28日:用MSER算法也实现了车牌 ...

最新文章

  1. jQuery图片自动添加水印插件
  2. STM32 电机教程 26 - ST MCLIB实战之增量式编码器位置传感FOC方案
  3. JavaScript实现hammingDistance汉明距离算法(附完整源码)
  4. yo angualr-fullstatck 项目打包部署
  5. 【渝粤教育】广东开放大学 原画设计 形成性考核 (23)
  6. 魅族16s封胶事件结果:属极个别封胶漏点 双方协商执行一赔二
  7. 别再瞎找了,设计师日常工作需要的软件都在这里了
  8. excel去重_Python 轻松搞定 Excel 常用的 20 个操作
  9. 拓端tecdat|python主题建模可视化LDA和T-SNE交互式可视化
  10. Android开发之实现多次点击事件
  11. c语言入门自学课件ppt,C语言从初学到精通中文ppt版
  12. 一个小小的Java表白小代码
  13. 微波雷达人体感应技术,智能镜子感应雷达模块应用,让生活更有趣
  14. django 搜索功能的实现
  15. JavaScript---网络编程(9-2)--DHTML技术演示(2-2)-表格加强
  16. 端口映射和端口转发区别是什么
  17. PAT甲级Invert a Binary Tree 柳神层序遍历的思路值得借鉴
  18. 三菱fx2n做从站的modbus通讯_三菱PLC编程实例分享
  19. Anchor-free的目标检测文章
  20. Linux 从入门到了解

热门文章

  1. 如何把即时通讯软件做大做强?
  2. 淮安掼蛋网页版-源码头文件总结
  3. BlueCat 批量网站查询工具,全网最快的查询工具!!
  4. 56PY宿迁味道这么可口
  5. 【转载】为了我们的SZ4J代码
  6. 如何给 Visual C++ 中的对话框增加位图背景
  7. 扣绩效,从来都不会让团队变得更好
  8. 程序员“苦逼值”测试,分数越高越苦逼
  9. 程序员不可能实现的6个愿望
  10. 服务器漏洞文件被删除漏洞,【华中科技大学 - 漏洞预警】Wordpress = 4.9.6 任意文件删除漏洞...