Opencv之像素值的获取

灰度图像${\rm{M}} \times {\rm{N}}$的像素矩阵值为0~255,像素值越大越亮。${{\rm{I}}_{{\rm{i}}{\rm{j}}}}$,i表示行的位置,j 表示列的位置即i行j列。RGB图像在Opencv中内存顺序为:BGR三个通道。

获取像素的方式有三种:代码如下
#include<opencv2/opencv.hpp>
#include<iostream> using namespace std;
using namespace cv;
void point(Mat& inputImage, Mat& result, int div);//指针方式
void iteraton_operate(Mat& inputImage, Mat& result, int div);//迭代器方式
void dynamic_address(Mat& inputImage, Mat& result, int div);//动态地址方式
Mat src, gray, dst;
int main(int argc, char** argv)
{ src = imread("H:/cv_code/image/home.jpg");
if (src.empty())
{
printf("could not find image");
return -;
}
namedWindow("input");
imshow("input",src);
cvtColor(src,gray,COLOR_BGR2GRAY);
namedWindow("result");
point(src, dst, );
iteraton_operate(src, dst, );
dynamic_address(src, dst, );
waitKey();
return ;
}
void point(Mat& inputImage, Mat& result, int div)
{
result = inputImage.clone();
int channels = result.channels();
int rows = result.rows;
int cols = result.cols * channels;
for (int i = ; i < rows; i++)
{
uchar* value = result.ptr<uchar>(i);
for (int j = ; j < cols; j++)
{
value[j] = value[j] / div * div + div / ;
}
}
}
void iteraton_operate(Mat& inputImage, Mat& result, int div)
{
result = inputImage.clone();
Mat_<Vec3b>::iterator itbegin = result.begin<Vec3b>();
Mat_<Vec3b>::iterator itend = result.end<Vec3b>();
for (;itbegin !=itend;++itbegin)
{
(*itbegin)[] = (*itbegin)[] / div * div + div / ;
(*itbegin)[] = (*itbegin)[] / div * div + div / ;
(*itbegin)[] = (*itbegin)[] / div * div + div / ; } }
void dynamic_address(Mat& inputImage, Mat& result, int div)
{
result = inputImage.clone();
int rows = result.rows;
int cols = result.cols;
for (int i = ; i < rows; i++)
{ for (int j = ; j < cols; j++)
{
result.at<Vec3b>(i, j)[] = result.at<Vec3b>(i, j)[] / div * div + div / ;
result.at<Vec3b>(i, j)[] = result.at<Vec3b>(i, j)[] / div * div + div / ;
result.at<Vec3b>(i, j)[] = result.at<Vec3b>(i, j)[] / div * div + div / ;
}
}
}
Opencv之像素值的获取的更多相关文章
- opencv图像像素值读取
说到图像像素,肯定要先认识一下图像中的坐标系长什么样. 1. 坐标体系中的零点坐标为图片的左上角,X轴为图像矩形的上面那条水平线:Y轴为图像矩形左边的那条垂直线.该坐标体系在诸如结构体Mat,Rect ...
- js获取不带单位的像素值
所谓获取不带单位的像素值就是获取比如元素的宽度.高度.字体大小.外边距.内边距等值但是去掉像素单位. 比如:某一个元素的宽度是100px,现在我要获取这个这个值但是不带单位“px”,对于这种问题你会怎 ...
- 怎么样用opencv将彩色图片转化成像素值只有0和255的灰度图?
分类: OpenCV [Q1]怎么样用opencv将彩色图片转化成像素值只有0和255的灰度图? 进行灰度化,IplImage* pImg = cvLoadImage( "C:\\1.b ...
- c#图像处理入门(-bitmap类和图像像素值获取方法)
c#图像处理入门 -bitmap类和图像像素值获取方法 一.Bitmap类 Bitmap对象封装了GDI+中的一个位图,此位图由图形图像及其属性的像素数据组成.因此Bitmap是用于处理由像素数据定义 ...
- AE IRasterCursor 获取栅格图层像素值
在编写使用栅格图层的代码时,常常要获取栅格图层的像素值(PixelValue).如果想获取某一点的像素值,可以使用IRaster2中的getPixelValue方法.但如果想要获得的是图层中的某一块甚 ...
- HTML5 Canvas 获取网页的像素值。
我之前在网上看过一个插件叫做出JScolor 颜色拾取器 说白了就是通过1*1PX的DOM设置颜色值通过JS来获取当前鼠标点击位置DOM的颜色值. 自从HTML5 画布出来之后.就有更好的方法来 ...
- opencv入门系列教学(五)图像的基本操作(像素值、属性、ROI和边框)
0.序言 每个图像是由一个个点组成的,而这些点可以表示为像素值的形式. 这篇博客里我们将学会: 访问像素值并修改它们 . 访问图像属性 . 设置感兴趣区域(ROI) . 分割和合并图像. 对于图像的基 ...
- opencv输出图片像素值
需求:在控制台输出灰度图像的像素值 代码: #include <stdio.h> #include <iostream> #include <opencv2/core/c ...
- Opencv利用Mat访问像素值
如果是采用Mat形式存储,想要访问灰度图像的灰度值,可以采用如下方法: 如果是彩色图像,采用如下方法: 说明: 其中gray_value中存放灰度值,image是读入的图像,i表示行,j表示列: co ...
随机推荐
- Premiere Pro CC2018安装教程
Premiere Pro CC2018安装教程 下载安装包:去官网下载或者百度PR2018的安装包 解压安装包后,找到Set-up.exe,右键,打开 安装的时候我们需要注册一个账号,点击“获取Ado ...
- C++中static关键字的用法
运行一个完整的程序.我们可将整个存储区分为四块: (1)栈区:就比如局部变量,对应的函数参数等这些,调用完之后相应的内存会自己释放掉,很让人省心. (2)堆区:堆来堆去的.得要人动手.所以得我们自己手 ...
- LoaderTest加载测试用例的方法总结
加载用例,可以用suite.addTest(测试类名("测试函数名"))实现,也可用过suit.addTest(loader.Loader....)实现,一下针对Loader的三个 ...
- Java实体对象为什么要实现Serializable接口?
前言 Java实体对象为什么一定要实现Serializable接口呢?在学JavaSE的时候有些实体对象不实现Serializable不是也没什么影响吗? 最近在学习mybatis的时候发现,老师写的 ...
- Pycharm每次新建工程都要重新安装相关库的解决办法
之前自己每次重建工程时,都不厌其烦的重新安装了第三方的库,直接在pycharm的terminal中利用pip安装,或者鼠标放在所需库的红色波浪线上 直接点击Install Package XXX 后面 ...
- spring cloud微服务快速教程之(八) Spring Cloud Alibaba--nacos(二)、配置中心
0-前言 上一篇我们介绍了nacos作为服务注册发现组件的功能,nacos还具有配置中心的功能,而且支持热加载: 在此之前,配置中心有Spring Cloud Config,实际上,用这个有很多风险和 ...
- 解决vue-cli使用组件报错
今天使用vue-cli,明明写的没错,都是vue-cli自动生成的,编译时怎嘛就会报错呢? 报错信息如下: 浏览器端报错: Failed to compile. ./src/components/Hi ...
- 【IDE】IDEA - 使用问题记录
1.显示方法API:类似eclipse把鼠标放到方法上有api信息. setting/keymap中搜索 quick docs:(有说默认快捷键是ctrl+q,但我的不是待查找快捷键) 2.forea ...
- Mybaits(10)N+1问题
N+1问题 从上面的例子日志中我们可以看到所有级联都成功了,但是引发了性能问题,例如我们在查询雇员的信息和工作任务信息,此时体检表和工牌信息就是多余,我们没必要查询一次.如果想日志体现的那样,取出了所 ...
- 论文阅读笔记(二十一)【CVPR2017】:Deep Spatial-Temporal Fusion Network for Video-Based Person Re-Identification
Introduction (1)Motivation: 当前CNN无法提取图像序列的关系特征:RNN较为忽视视频序列前期的帧信息,也缺乏对于步态等具体信息的提取:Siamese损失和Triplet损失 ...