灰度图像${\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之像素值的获取的更多相关文章

  1. opencv图像像素值读取

    说到图像像素,肯定要先认识一下图像中的坐标系长什么样. 1. 坐标体系中的零点坐标为图片的左上角,X轴为图像矩形的上面那条水平线:Y轴为图像矩形左边的那条垂直线.该坐标体系在诸如结构体Mat,Rect ...

  2. js获取不带单位的像素值

    所谓获取不带单位的像素值就是获取比如元素的宽度.高度.字体大小.外边距.内边距等值但是去掉像素单位. 比如:某一个元素的宽度是100px,现在我要获取这个这个值但是不带单位“px”,对于这种问题你会怎 ...

  3. 怎么样用opencv将彩色图片转化成像素值只有0和255的灰度图?

      分类: OpenCV [Q1]怎么样用opencv将彩色图片转化成像素值只有0和255的灰度图? 进行灰度化,IplImage* pImg = cvLoadImage( "C:\\1.b ...

  4. c#图像处理入门(-bitmap类和图像像素值获取方法)

    c#图像处理入门 -bitmap类和图像像素值获取方法 一.Bitmap类 Bitmap对象封装了GDI+中的一个位图,此位图由图形图像及其属性的像素数据组成.因此Bitmap是用于处理由像素数据定义 ...

  5. AE IRasterCursor 获取栅格图层像素值

    在编写使用栅格图层的代码时,常常要获取栅格图层的像素值(PixelValue).如果想获取某一点的像素值,可以使用IRaster2中的getPixelValue方法.但如果想要获得的是图层中的某一块甚 ...

  6. HTML5 Canvas 获取网页的像素值。

    我之前在网上看过一个插件叫做出JScolor   颜色拾取器  说白了就是通过1*1PX的DOM设置颜色值通过JS来获取当前鼠标点击位置DOM的颜色值. 自从HTML5 画布出来之后.就有更好的方法来 ...

  7. opencv入门系列教学(五)图像的基本操作(像素值、属性、ROI和边框)

    0.序言 每个图像是由一个个点组成的,而这些点可以表示为像素值的形式. 这篇博客里我们将学会: 访问像素值并修改它们 . 访问图像属性 . 设置感兴趣区域(ROI) . 分割和合并图像. 对于图像的基 ...

  8. opencv输出图片像素值

    需求:在控制台输出灰度图像的像素值 代码: #include <stdio.h> #include <iostream> #include <opencv2/core/c ...

  9. Opencv利用Mat访问像素值

    如果是采用Mat形式存储,想要访问灰度图像的灰度值,可以采用如下方法: 如果是彩色图像,采用如下方法: 说明: 其中gray_value中存放灰度值,image是读入的图像,i表示行,j表示列: co ...

随机推荐

  1. Learning hard 学习笔记

    第一章 你真的了解C#吗 1.什么是C#, 微软公司,面向对象,运行于.NET Framework之上, 2.C#能编写哪些应用程序, Windows应用桌面程序,Web应用程序,Web服务, 3.什 ...

  2. MyBatis XML配置properties

    来源:https://www.w3cschool.cn/mybatis/7zy61ilv.html XML 映射配置文件 MyBatis 的配置文件包含了影响 MyBatis 行为甚深的设置(sett ...

  3. LeetCode 57. Insert Interval 插入区间 (C++/Java)

    题目: Given a set of non-overlapping intervals, insert a new interval into the intervals (merge if nec ...

  4. mysql官方源安装的一些问题

    今天测试Linux 各个软件源 ,发现mysql 配置官方源之后,yum install -y mysql   安装了 mysql lastst 最新版,  安装完之后,奇葩的是没有提示输入密码, 所 ...

  5. P2094运输

    -------------------- 链接:Miku ------------------- 这是一道水贪心,很容易想到做法就是把最贵的两个放在一块,让后当成一个重新放回队列 ---------- ...

  6. 发ajax响应json格式数据

    1.maven依赖 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="h ...

  7. JavaScript使用MQTT

    1.MQTT Server使用EMQTTD开源库,自行安装配置: 2.JS使用Websocket连接通信. 3.JS的MQTT库为paho-mqtt,git地址:https://github.com/ ...

  8. LeetCode 56. Merge Intervals 合并区间 (C++/Java)

    题目: Given a collection of intervals, merge all overlapping intervals. Example 1: Input: [[1,3],[2,6] ...

  9. 使用springboot整合ActiveMQ

    结构图 第一步:导入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifact ...

  10. 【Asp.net】 七大内置对象

    本文主要分析Asp.net的7大内置对象. 利用提供的内置对象可以实现页面之间的数据传递和一些特定的功能,如数据输出,页面重定向等.5个核心常用内置对象分别是Application,Session, ...