OpenCV——颜色缩减、计时函数、访问像素
//颜色空间缩减
//src:源图片
//dst:目标图片
//divideWith:缩减宽度
void ColorSpaceReduction(Mat src,int divideWith,Mat& dst)
{
//创建查询用的表
uchar table[];
for (int i = ; i < ; ++i)
table[i] = divideWith * (i / divideWith);
//创建mat型用于LUT函数查表
Mat lookUpTable(, , CV_8U);
uchar* p = lookUpTable.data;
for (int i = ; i < ; ++i)
p[i] = table[i];
//src是输入dst是输出
LUT(src, lookUpTable, dst); }
double time0 = static_cast<double>(getTickCount());//记录起始时间 time0 = ((double)getTickCount() - time0) / getTickFrequency();
cout << "运行时间为 "<< time0 << "秒"<<endl;//输出运行时间
访问像素的三种方法
【方法1】指针访问,c语言操作符[ ](速度最快,但有越界的风险)
int rowNumber = dst.rows;//行数
int colNumber = dst.cols*dst.channels();//列数*通道数=每一行的元素个数 //循环遍历每个元素
for (int i = ; i < rowNumber; i++)//行循环
{
uchar* data = dst.ptr<uchar>(i);//获取第i行首地址
for (int j=; j < colNumber; j++)//列循环
data[j] = data[j] / div* div+div/;//颜色缩减操作
//也可以写成 *data++=*data/div*div+div/2;
}
【方法2】迭代器iterator(绝对安全,不会越界)
Mat_<Vec3b>::iterator it = dst.begin<Vec3b>();//初始位置的迭代器
Mat_<Vec3b>::iterator itend = dst.end<Vec3b>();//终止位置的迭代器
//彩色图像每个像素有3个通道
for (; it != itend; ++it)
{
(*it)[] = (*it)[] / div * div + div / ;
(*it)[] = (*it)[] / div * div + div / ;
(*it)[] = (*it)[] / div * div + div / ;
}
【方法1】动态地址计算(最慢)
int rowNumber = dst.rows;//行数
int colNumber = dst.cols;//列数
for (int i = ; i < rowNumber; i++)
{
for (int j = ; j < colNumber; j++)
{
//彩色图像每个像素有3个通道
dst.at<Vec3b>(i, j)[] = dst.at<Vec3b>(i, j)[] / div * div + div / ;
dst.at<Vec3b>(i, j)[] = dst.at<Vec3b>(i, j)[] / div * div + div / ;
dst.at<Vec3b>(i, j)[] = dst.at<Vec3b>(i, j)[] / div * div + div / ; }
}
OpenCV——颜色缩减、计时函数、访问像素的更多相关文章
- OpenCV学习笔记(三) 访问像素
转自:OpenCV如何扫描图像.利用查找表和计时 测试代码:opencv\samples\cpp\tutorial_code\core\how_to_scan_images 测试函数耗时 cv::ge ...
- OpenCV(2)-Mat数据结构及访问Mat中像素
Mat数据结构 一开始OpenCV是基于C语言的,在比较早的教材例如<学习OpenCV>中,讲解的存储图像的数据结构还是IplImage,这样需要手动管理内存.现在存储图像的基本数据结构是 ...
- OpenCV(图像处理)—访问像素的三种方法
方法一:用指针访问像素 #include <opencv2/opencv.hpp> #include <opencv2/core/core.hpp> #include < ...
- OpenCV探索之路(十七):Mat和IplImage访问像素的方法总结
在opencv的编程中,遍历访问图像元素是经常遇到的操作,掌握其方法非常重要,无论是Mat类的像素访问,还是IplImage结构体的访问的方法,都必须扎实掌握,毕竟,图像处理本质上就是对像素的各种操作 ...
- OpenCV创建轨迹条,图片像素的访问
.OpenCV创建进度条以及图像对比度,亮度调整 1.创建轨迹条createTrackbar() 函数原型C++: intcreateTrackbar(conststring& trackba ...
- 【opencv学习笔记七】访问图像中的像素与图像亮度对比度调整
今天我们来看一下如何访问图像的像素,以及如何改变图像的亮度与对比度. 在之前我们先来看一下图像矩阵数据的排列方式.我们以一个简单的矩阵来说明: 对单通道图像排列如下: 对于双通道图像排列如下: 那么对 ...
- 怎么样用opencv将彩色图片转化成像素值只有0和255的灰度图?
分类: OpenCV [Q1]怎么样用opencv将彩色图片转化成像素值只有0和255的灰度图? 进行灰度化,IplImage* pImg = cvLoadImage( "C:\\1.b ...
- OpenCV 学习之路(2) -- 操作像素
本节内容: 访问像素值 用指针扫描图像 用迭代器扫描图像 编写高效的图像扫描循环 扫描图像并访问相邻像素 实现简单的图像运算 图像重映射 访问像素值 准备工作: 创建一个简单函数,用它在图像中加入椒盐 ...
- 颜色缩减(带Trackbar)【从毛星云Opencv3编程入门P75 P111例程改编】
最近学了点opencv,买了毛星云的书,大力推荐哦. 颜色缩减,自己加了个Trackbar看起来更直观一些. 我一般自己先看一遍程序,脑子里有个大概印象了,再自己写一遍,这样出了错误会印象更深刻. 1 ...
随机推荐
- 输出字符串中最长的单词 C# 算法
要求: 设计一个算法从一片英语文章或者英语字符串里面输出其中最长的单词. Input: string Output: string 尽可能多的设计测试用例来测试这个算法. 考虑空间和时间复杂度 ...
- django-xss攻击原理与防范
一.跨站脚本攻击(XSS) XSS是一种经常出现在web应用中的计算机安全漏洞,它允许恶意web用户将代码植入到提供给其它用户使用的页面中.也属一种注入攻击,注入本质上就是把输入的数据变成可执行的程序 ...
- WeUI移动页面实现时间选择器(年-月-日-时-分)
在做微信公众号的时候,使用的WeUI样式,有一个需求是用户选择一个预约时间,需要年月日并精确到小时和分钟. 但是WeUI的picker组件不支持直接显示5列,根据WeUI.js作者的建议,是将日期和时 ...
- (转)预处器的对比——Sass、LESS和Stylus
英文原文:http://net.tutsplus.com/tutorials/html-css-techniques/sass-vs-less-vs-stylus-a-preprocessor-sho ...
- <Android 应用 之路> 干货集中营 ~ GankIOClient
简介 利用干货集中营 , daimajia和他的小伙伴给我们开发者带来的福利开发的一个干货集中营客户端,主要功能在阅读干货上. Github地址: https://github.com/onlylov ...
- pgAdmin4 ubuntu python 安装
ubuntu安装pgAdmin4,通过python的pip 安装 pgAdmin4.(首更时间20161205) 新版本的pgAdmin4目前支持mac/window/linux/python,可是l ...
- 微信为啥不能直接下载.apk安装包
今天遇到一个很蛋疼问题,我们的微信公众号上想放一个下载自己公司app的点击按钮,如果是苹果手机点击这个按钮就直接跳转到苹果的appstore,如果是android手机的话,就直接跳我们的服务器下载ap ...
- MySQL——优化ORDER BY语句
本篇文章我们将了解ORDER BY语句的优化,在此之前,你需要对索引有基本的了解,不了解的朋友们可以先看一下我之前写过的索引相关文章.现在让我们开始吧. MySQL中的两种排序方式 1.通过有序索引顺 ...
- TSQL使用ADHOC访问Excle文件
如题,今天正好碰到这个问题,现将相关知识点记录如下: --开启高级配置功能 reconfigure --开启导入功能 reconfigure --允许在进程中使用ACE.OLEDB.12 --允许使用 ...
- CreateProjectFormat——初始项目目录格式
百度云链接:https://pan.baidu.com/s/1f_2YaMf9619Rt5AlC6nryQ 密码:v2cb 修改中...