OpenCV 像素存储
像素存储
OpenCV 中图像矩阵的大小取决于所用的颜色模型,更准确的说是取决于图像所用到的通道数。
如果使用的是灰度图,矩阵大概如图所示:
如果使用的是多通道的图像,矩阵中的列会包含多个子列,子列的个数和通道数相等。例如 RGB 颜色模型的矩阵大致如下图所示:
很多情况下,因为内存足够大,可以实现连续存储,因此图像中的各行能够一行一行的连接起来,形成一个长行。连续存储有助于提升图像扫描速度,我们可以使用 isContinuous 来判断矩阵是不是连续存储的。
简单示例
下面模拟实现减少图像颜色的操作
// ---------------------【 colorReduce() 函数 】------------------
// 描述:使用【指针访问:C操作符[]】方法版的颜色空间缩减函数
// --------------------------------------------------------------
void colorReduce (Mat& inputImage, Mat& outputImage, int div)
{// 参数准备outputImage = inputImage.clone()j;int rowNumber = outputImage.rows(); // 行号int colNumber = outputImage.clos * outputImage.channels(); // 列数 * 通道数 = 每一行元素的个数// 双重循环,遍历所有的元素for (int i = 0; i < rowNumber; ++i) {uchar* data = outputImage.ptr<uchar>(i); // 获取第 i 行的首地址for (int j = 0; j < colNumber; ++j) {// ------ 【开始处理了每个元素】------data[j] = data[j] / div * div + div / 2;}}
}
Mat 类有若干成员函数,可以获取到图像的属性。公有成员函数变量 cols 和 rows 给出了图像大的宽和高,而成员函数 channels() 用于返回图像的通道数。灰度图的通道数是 1,彩色图的通道数是3.
以上示例还可以使用迭代器的方式实现
void colorReduce (Mat& inputImage, Mat& outputImage, int div)
{// 参数准备outputImage = inputImage.clone();// 获取迭代器Mat_<Vec3d>::iterator it = outputImage.begin<Vec3d>(); // 初始位置Mat_<Vec3d>::iterator itend = outputImage.end<Vec3d>()' // 结束位置for (; it != itend; ++it) {(*it)[0] = (*it)[0] /div * div + div /2;(*it)[1] = (*it)[1] /div * div + div /2;(*it)[2] = (*it)[2] /div * div + div /2;}
}
相关文章:
java反射用在哪里_Java反射
昨天去参加比赛了,所以没有进行博客迁移。人生中的第一场健体比赛,虽然没得奖,但是收获和带来的思考颇丰。意外地进入了男子B组(174以上)的半决赛,然后在半决赛的时候还被裁判员点名出去单独比较,这个很让我惊喜。最后…
html中锚点的应用【本页面跳转】
设置锚点 <a name"top"></a> 同页跳转 <a href"#top">返回顶部</a> 不同页跳转 <a href"test.htm#top>跳转到test.htm页面顶部</a> 转载于:https://www.cnblogs.com/wangmars/p/3241855.html
SQL2005CLR函数扩展-正则表达式
用过Oracle的人都知道Oracle有四个正则表达函数REGEXP_LIKE、REGEXP_INSTR、REGEXP_SUBSTR、和EGEXP_REPLACE,而SQLServer却无法完全实现上面的功能。以前我们知道用sp_OAxxx系列函数来调用js组建实现正则,现在我们可以通过CLR扩展来借助.Net实现。 ※ 代…
ROW_NUMBER() OVER函数的基本用法
简单的说row_number()从1开始,为每一条分组记录返回一个数字,这里的ROW_NUMBER() OVER (ORDER BY xlh DESC) 是先把xlh列降序,再为降序以后的没条xlh记录返回一个序号。 2row_number() OVER (PARTITION BY COL1 ORDER BY COL2) 表示根据COL1…
OpenC 仿射变换
仿射变换(Affine Transformation)又称仿射映射,是指在几何中,一个向量空间进行一次线性变化并加上一个平移,变换位另一个的向量空间的过程。 一个任意的仿射变换都能够表示为乘以一个矩阵(线性变换…
做acm 需要学的算法
做acm 需要学的算法 转一个搞ACM需要的掌握的算法. 要注意,ACM的竞赛性强,因此自己应该和自己的实际应用联系起来. 适合自己的才是好的,有的人不适合搞算法,喜欢系统架构,因此不要看到别人什么就眼红, 发挥自己的长处,这才是重要的. 第一阶段:练经典常用算法&am…
java实现七日股票问题_七日打卡--JAVA资源限制
资源限制资源限制是指在进行并发编程时,程序的执行速度受限于计算机硬件资源或软件资源。 例如服务器的带宽只有2Mb/s,某个资源的下载速度是1Mb/s每秒,系统启动10个线程下载资源,下载速度不会变成10Mb/s,所以在进行并发…
Cassandra 可视化工具
2019独角兽企业重金招聘Python工程师标准>>> 最近开始接触Cassandra,这些天在cassandra的wiki发现了一些可视化工具的推荐。现在也把这个链接推荐给大家:http://wiki.apache.org/cassandra/Administration%20Tools 。 几番折腾之后࿰…
Linux软件的安装,更新与卸载
linux软件的安装,更新与卸载 Linux常见的安装为tar,zip,gz,rpm,deb,bin等。我们可以简单的分为三类. 第一:打包或压缩文件tar,zip,gz等,一般解压后即可&#…
因链接静态库先后顺序不正确,引起符号定义找不到
问题 项目中需要链接多个静态库,在编译的时候报错如下 sdi_io.cpp:(.text._ZN13sdi_H264EncIO7DataPopEPm0x30):对‘H264ENC_StatusGet(H264ENC_Status_t&)’未定义的引用可能原因是符号确实没有定义,而本文出现这个问题的原因是&#…
java中后台是那一部分_一套Java后台管理系统,拿来即用(附项目地址)
前言这套Base Admin是一套简单通用的后台管理系统,主要功能有:权限管理、菜单管理、用户管理,系统设置、实时日志,实时监控,API加密,以及登录用户修改密码、配置个性菜单等技术栈前端:layuijava…
基础 HTML之目录问题(相对路径和绝对路径区别)
一、相对路径和绝对路径 相对路径:以引用文件之网页所在位置为参考基础,而建立出的目录路径。因此,当保存于不同目录的网页引用同一个文件时,所使用的路径将不相同,故称之为相对。 绝对路径:以Web站点根目录…
[转]android selector 背景选择器
关于listview和button都要改变android原来控件的背景,在网上查找了一些资料不是很全,所以现在总结一下android的selector的用法。首先android的selector是在drawable/xxx.xml中配置的。先看一下listview中的状态:把下面的XML文件保存成你自己…
牛客国庆集训派对Day6 B.Board
链接 [https://www.nowcoder.com/acm/contest/206/B] 分析 只要在n*n范围内随便找一个斜对角的一个格子去计算就知道了 具体看代码体会吧 代码 #include<bits/stdc.h> using namespace std; int a[1010][1010];int main(){int n,i,j,x,y;//freopen("in.txt",&q…
java并发读取相同的文件_高效读取大文件,再也不用担心 OOM 了!
最近阿粉接到一个需求,需要从文件读取数据,然后经过业务处理之后存储到数据库中。这个需求,说实话不是很难,阿粉很快完成了第一个版本。内存读取第一个版本,阿粉采用内存读取的方式,所有的数据首先读读取到…
Cmake 实例学习 一
一. 第一个简单的例子 在一个目录下面实现一个简单的 hello world 程序 使用cmake进行构建的时候,每个目录下面都要有一个 CMakeLists.txt 的文件 如果是一个稍微大的工程,有多级目录,在上级目录中的 CMakeLists.txt 中会有定义要求编译子目…
ORA-19502: write error on file xxxxx, block number xxxx
错误现象: 在ORACLE 10g下为表空间IGNITE_EGVSQL01增加数据文件时,报如下错误: SQL> ALTER TABLESPACE IGNITE_EGVSQL01 ADD DATAFILE /oradata/ignt/ignite_egvsql01_d02.dbf SIZE 4096M AUTOEXTEND OFF; ERROR at line 1: O…
关于Jfinal的分享代码托管GitHub
为什么80%的码农都做不了架构师?>>> Blog中所有的代码已经托管到github. https://github.com/b1412 此blog中关于Jfinal的代码分享不再维护。有兴趣的朋友可以关注我的github。 大家都贡献和分享一点,让jfinal发展的更好~ 转载于:https:…
软件发布版本的业界规则?
文章:8天学通MongoDB——第一天 基础入门 今天看到一篇文章说:业界规则,偶数为“稳定版”(如:1.6.X,1.8.X),奇数为“开发版”(如:1.7.X,1.9.X)&am…
CMake学习资料
CMake 官方 FAQ https://gitlab.kitware.com/cmake/community/wikis/FAQ CMake 官方文档 https://cmake.org/cmake/help/cmake2.4docs.html CMake 视频教程 https://www.youtube.com/watch?vCLvZTyji_Uw CMake 维基教科书 https://zh.wikibooks.org/w/index.php?titleCMake_入…
MySQL rpm包 二进制区别_Linux环境下安装mysql5.6(二进制包不是rpm格式)
一.准备:1.CentOS release 6.82.mysql-5.6.31-linux-glibc2.5-x86_64.tar.gz3.Linux下MySQL5.6与MySQL5.7安装方法略有不同二.卸载原有的mysqlfind / -name mysqlrm -rf 上边查找到的路径,多个路径用空格隔开三.在安装包存放目录下执行命令解压文件tar -zxvf mysql-…
【心情】 轻装前行
为自己做一份总结吧,从毕业到现在~ 时间过得不快不慢,从毕业到现在挣扎着已经2年多了,2年多经历的了很多事情。 毕业回国不到一个礼拜,就跑到大连工作,一个造船厂,公司在长兴岛开发区,岛上几万人…
Android 马甲包制作流程
一、马甲包的制作流程 1.配置马甲包的applicationId以及应用名称 在app的build.gradle文件中添加马甲包的配置 android {signingConfigs {config {keyAlias ****keyPassword ****storeFile file(D:/qianming/****.jks)storePassword ****}}compileSdkVersion 25buildToolsVersi…
Cmake 交叉编译
转载自 http://zhixinliu.com/2016/02/01/2016-02-01-cmake-cross-compile/ CMake交叉编译 CMake的使用,以及如何将一个项目移植到Android。 CMake的用法 先让我们简单学习回顾一下cmake的基本知识: 基本流程 以linux平台为例,使用 CMak…
利用System.Uri转URL为绝对地址
在使用ASPOSE.Word生成Word文档时可以通过InsertHtml(html)来将图文信息写入Word文档(图片内嵌),但要求html里图片的src是绝对全路径,所以需要对html进行转化。 获取html可以来自数据库数据或者通过网络抓取,得到之后使用System.Uri来进行替换…
idea上java接口自动化_Java接口自动化之IDEA创建及运行maven项目
本文2564字阅读约需7分钟第195次推送Maven作为一个项目管理工具,是一组标准集合,一个项目的生命周期、一个依赖管理系统,以下主要介绍IDEA创建及运行maven项目。01创建maven项目①打开IDEA,顶部菜单栏依次选择File-->New-->…
.NET面向上下文、AOP架构模式(实现)
.NET面向上下文、AOP架构模式(实现) 1.上下文Context、面向切面编程AOP模型分析 在本人的.NET面向上下文、AOP架构模式(概述)一文中,我们大概了解了上下文如何辅助对象在运行时的管理。在很多时候我们急需在运行时能把…
英语之弱元音Schwa
IELTS Speaking - 学会英语Schwa弱元音,你的口语也将充满英伦味 https://baijiahao.baidu.com/s?id1596905156544848616&wfrspider&forpc http://blog.sina.com.cn/s/blog_95e5f8a601017jr4.html https://www.guokr.com/blog/440820/ 打傻方进 百家号04-05…
工厂方法模式和抽象工厂模式
工厂方法模式和抽象工厂模式工厂方法模式抽象工厂模式总结:工厂方法模式 #include <string> #include <iostream>// Abstract class Splitter { private:/* data */ public:Splitter(/* args */);virtual ~Splitter(); public:virtual void split() 0; };Splitte…
关于JQuery中的ajax请求或者post请求的回调方法中的操作执行或者变量修改没反映的问题...
前段时间做一个项目,而项目中所有的请求都要用jquery 中的ajax请求或者post请求,但是开始处理一些简单操作还好,但是自己写了一些验证就出现问题了,比如表单提交的时候,要验证帐号的唯一性,所以要在submit前…