最近学了点opencv,买了毛星云的书,大力推荐哦。

颜色缩减,自己加了个Trackbar看起来更直观一些。

我一般自己先看一遍程序,脑子里有个大概印象了,再自己写一遍,这样出了错误会印象更深刻。

1. Mat.type( )括号不能丢

2. Mat.channels()括号不能丢

3.创建Trackbar的函数createTrackbar(TrackbarName, WINDOWNAMAE, &sliderValue, maxSliderValue,onTrackbar);

这里onTrackbar是一个回调函数,写在creatTrackbar里时,不用()

在写这个函数时,是要加括号的,调用时候也是哦,

onTrackbar(int , void*)

int 实slierValue,void* 填0貌似就可以了

4.  创建Trackbar之前,一定要

namedWindow(WINDOWNAME, 1);

如果没有此句,就不显示Trackbar,很重要哦 ,这里我犯了错。

char TrackbarName[50];

sprintf(TrackbarName, "颜色缩减值%d",divslider);

这句是用来显示滑动条上说明文字,还是加上比较好。

5.  自己画蛇添足地在onTrackbar 回调函数上加了个while(1),其实不用啦!

6. 颜色缩减函数很容易懂,就不说了。不过不太明白为啥要 data[j] = data[j] / div*div+div/2   这个div/2我不太懂。没有用div/2 也好用来着。

代码如下,要先在工程文件里有个“dota.jpg”

#include <opencv2/opencv.hpp>
#include<highgui.hpp> using namespace cv;
using namespace std;
#define WINDOWNAME "dstImg"
int maxdiv = 255;
Mat dstImg,srcImg;
int divslider;
void colorReduce(Mat& src, Mat& dst, int div);
void on_Trackbar(int ,void*); int main(){ divslider = 20;
srcImg = imread("dota.jpg", 1); dstImg.create(srcImg.cols,srcImg.rows, srcImg.type()); imshow("srcImg", srcImg); namedWindow(WINDOWNAME, 1);//如果没有此句,就不显示Trackbar。
char TrackbarName[50];
sprintf(TrackbarName, "颜色缩减值%d",divslider); createTrackbar("reduce div", WINDOWNAME, &divslider, maxdiv, on_Trackbar); on_Trackbar(divslider, 0);
waitKey(0); return 0;
} void on_Trackbar(int, void*){
if (divslider > 0){
colorReduce(srcImg, dstImg, divslider);
imshow(WINDOWNAME, dstImg);
}
} void colorReduce(Mat& src, Mat& dst, int div){
dst = src.clone();
int rowNum = dst.rows;
int colNum = dst.cols * dst.channels(); for (int i = 0; i < rowNum; i++){
uchar* data = dst.ptr<uchar>(i);
for (int j = 0; j < colNum; j++)
data[j] = data[j] / div*div;
}
}

颜色缩减(带Trackbar)【从毛星云Opencv3编程入门P75 P111例程改编】的更多相关文章

  1. 【浅墨著作】《OpenCV3编程入门》内容简单介绍&amp;勘误&amp;配套源码下载

    经过近一年的沉淀和总结,<OpenCV3编程入门>一书最终和大家见面了. 近期有为数不少的小伙伴们发邮件给浅墨建议最好在博客里面贴出这本书的文件夹,方便大家更好的了解这本书的内容.事实上近 ...

  2. OpenCV3编程入门.记录

    ZC:OpenCV3编程入门_毛星云编著_电子工业出版.pdf 1.在看到 PDF.P134(计算数组加权和:addWeighted()函数)的时候,其中讲到“当输出数组的深度为CV_32S时,这个函 ...

  3. OpenCV3编程入门笔记(1)图像载入、显示、保存、变换灰度图

    图像载入.显示.保存函数: 1         图像载入函数:imread()   Mat imread(const string& filename, int flags=1); const ...

  4. OpenCV3编程入门笔记(4)腐蚀、膨胀、开闭运算、漫水填充、金字塔、阈值化、霍夫变换

    腐蚀erode.膨胀dilate 腐蚀和膨胀是针对图像中的白色部分(高亮部分)而言的,不是黑色的.除了输入输出图像外,还需传入模板算子element,opencv中有三种可以选择:矩形MORPH_RE ...

  5. OpenCV3编程入门笔记(3)线性滤波、非线性滤波、图像深度、通道

    15     遍历图像中的像素,是先for行数后for列数的,也就是一列一列的遍历,matlab中是从1开始计数,opnecv中采用c语言的从0开始计数. 矩阵归一化:normalize()函数,参数 ...

  6. OpenCV3编程入门笔记(2)计时函数、感兴趣区域RIO、分离/混合通道

    11     绘制直线的line函数 DrawLine(Mat img, Pont start, Point end); 绘制椭圆的ellipse函数 DrawEllipse(Mat img, dou ...

  7. 《OpenCV3编程入门》访问图像中像素的三类方法

    ·方法一 指针访问:C操作符[ ]; ·方法二 迭代器iterator; ·方法三 动态地址计算; #include <opencv2/core/core.hpp> #include &l ...

  8. OpenCV3编程入门-读书笔记2-core组件

    一.颜色空间缩减 1.概念 如果图像是3通道,深度为1个字节,则每个像素有256*256*256种可能值,这么多的可能值会对算法性能造成严重影响.利用颜色空间缩减就能解决这个问题,例如将颜色值0~9取 ...

  9. OpenCV3编程入门-读书笔记1

    一.OpenCV概述 1.OpenCV全程Open Source Computer Vision Library,即开源计算机视觉库.它是一个跨平台的开源计算机视觉库,可以运行在windows.lin ...

随机推荐

  1. oracle 导出导入常见问题

    oracle 导入导出常见有两种方法 EXP和IMP是客户端工具程序,它们既可以在客户端使用,也可以在服务端使用.EXPDP和IMPDP是服务端的工具程序,他们只能在ORACLE服务端使用,不能在客户 ...

  2. Less/Sass编译工具

    less中午网站有详细的说明:http://www.1024i.com/demo/less/ 那里我使用的koala   全平台支持,国产.下载地址:http://koala-app.com/inde ...

  3. codevs4817 江哥的dp题d

    4817 江哥的dp题d  时间限制: 1 s  空间限制: 256000 KB  题目等级 : 黄金 Gold [题目描述] Description 已知1-N的排列P的LIS(最长上升子序列)不超 ...

  4. IOS时间戳

    什么是时间戳? 时间戳(timestamp),通常是一个字符序列,唯一地标识某一刻的时间.数字时间戳技术是数字签名技术一种变种的应用. 思考:简单来讲就是根据文件hash加密后生成的摘要和时间生成的时 ...

  5. Python3基础 count 返回指定元素在列表中的个数

    镇场诗:---大梦谁觉,水月中建博客.百千磨难,才知世事无常.---今持佛语,技术无量愿学.愿尽所学,铸一良心博客.------------------------------------------ ...

  6. A840S黑砖修复过程(2013-05-22修改)

    首先感谢su_ky大神,没有他的博客和帖子,这次救砖根本没有成功的可能.其次谢谢A840S交流群284998898的Sunny deng,没有他提供的分区镜像同样也完成不了这次的工作.现象:手机完全没 ...

  7. 数据库SQL语句练习题10--18

    10.查询Score表中的最高分的学生学号和课程号.(子查询或者排序) select t.sno,t.cno from SCORE t where degree = (select max(degre ...

  8. BZOJ 2879 美食节(费用流-动态加边)

    题目链接:http://61.187.179.132/JudgeOnline/problem.php?id=2879 题意:有n道菜,每道菜需要b[i]份,m个厨师,第j个厨师做第i道菜需要时间a[i ...

  9. Android 网格布局 计算器

    <GridLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools=&quo ...

  10. MD5加密算法

    package com.bao.tools.encryption; import java.security.MessageDigest;import java.security.NoSuchAlgo ...