颜色缩减(带Trackbar)【从毛星云Opencv3编程入门P75 P111例程改编】
最近学了点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;}
}
转载于:https://www.cnblogs.com/xy123001/p/5218659.html
颜色缩减(带Trackbar)【从毛星云Opencv3编程入门P75 P111例程改编】相关推荐
- 《OpenCV3编程入门-毛星云》第三部分 掌握imgproc组件
平台:Win7 64bits + Visual Studio 2012 + OpenCV 2.4.10 截止今天我终于把<OpenCV3编程入门-毛星云>这本书看完了,看了将近两个月终于看 ...
- 图像识别(5)——《OpenCV3编程入门-毛星云》第三部分 掌握imgproc组件
博主QQ:1356438802 QQ群:473383394--UVC&OPENCV473383394 平台:Win7 64bits + Visual Studio 2012 + OpenCV ...
- OpenCV3编程入门(毛星云)之视频读取与播放
OpenCV3编程入门(毛星云)之视频读取与播放,看看运行截图: 看来OpenCV API封装得太好了..努力,努力,再努力~~~
- 图像识别(2)——《OpenCV3编程入门》毛星云编著
博主QQ:1356438802 QQ群:473383394--UVC&OpenCV47 最近几天开始收集图像识别的相关资料: 程序开源库主要就是OpenCV,这是主流工具,所以我暂时也没去了解 ...
- OpenCV3编程入门(毛星云)之用滚动条控制两图片的混合
OpenCV3编程入门书本上的示例,copy下来学习学习~~代码如下: 美女1 美女2 #include <opencv2/opencv.hpp> using namespace cv; ...
- 【OpenCV学习】 《OpenCV3编程入门》--毛星云 01 邂逅OpenCV(OpenCV基本概念与基本架构) ROS系统上的运用(python实现)
对 <OpenCV3编程入门>第一章的学习笔记:理解什么是计算机视觉,什么是OpenCV,以及其中的联系等等. PS:此书为2014年出版,opencv的版本和接口也与现在有些不一致了,作 ...
- 【资源】OpenCV3编程入门_毛星云
OpenCV在计算机视觉领域扮演着重要的角色.作为一个基于开源发行的跨平台计算机视觉库,OpenCV实现了图像处理和计算机视觉方面的很多通用算法.<OpenCV3编程入门>以当前最新版本的 ...
- 原创 OpenCV3编程入门 学习笔记(总)
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/qq_36163358/article/ ...
- OpenCV3编程入门 学习笔记(总)
OpenCV3编程入门 学习笔记 2018.12.12-2018.12.29 此博客为在看过毛星云版<OpenCV3编程入门>后所总结的一本笔记,可供复习使用. 文章目录 OpenCV3编 ...
最新文章
- grpc 传递上下文_grpc 源码笔记 02:ClientConn
- ESP8266-SDK的硬件定时器
- ThreadLocal是什么?
- linux iptables 如何设置允许几个 ip访问,Linux防火墙iptables限制几个特定ip才能访问服务器。...
- 阿里云移动测试平台MQC移动测试沙龙第3期【北京站】
- CodeForces 903D Almost Difference
- Leetcode题目:Valid Anagram
- 大型程序是如何开发的_小程序开发好之后如何引流
- vue 图片自适应排列插件_vue自适应布局3种方法
- java第七章jdbc课后简答题_jsp编程基础第七章习题
- Silverlight 用户代码未处理 TypeLoadException
- numpy-np.concatenate
- python 矩阵点乘_Python之Numpy库基础——矩阵运算
- 基于Matlab的车牌号识别
- java中display1_关于displaytag1.1的两种分页
- 大文件上传下载实现思路,分片、断点续传代码实现,以及webUpload组件
- 9.4 多元复合函数求导
- 干货 | 京东云托管Kubernetes集成镜像仓库并部署原生DashBoard
- 敏捷项目管理21天学习计划--敏捷生命周期
- 【渝粤教育】国家开放大学2019年春季 1292企业集团财务管理 参考试题
热门文章
- 马斯克遭“天劫”:40颗星链卫星葬身地磁风暴,数千万美元打了水漂
- AI给老照片上色,真的准吗?技术圈和历史圈吵了1000帖
- 最新中文NLP开源工具箱来了!支持6大任务,面向工业应用 | 资源
- Linux命令——expr
- RocketMQ(六):namesrv再探
- 【290】Python 函数
- 关于Cocos2d-x中精灵节点的透明度的设置
- Ext4 MVC CRUD操作
- Android开发技巧--Application, ListView排列,格式化浮点数,string.xml占位符,动态引用图片...
- Python编程系列教程第16讲——拷贝自身到系统目录