opencv学习笔记之对灰度图像遍历的三种方法

opencv学习笔记之对灰度图像遍历的三种方法灰度图像遍历的三种方法通过指针访问 通过迭代器访问 动态地址计算,通过at()函数实现、实现代码:#include#includeusingnamespacecv;usingnamespacestd;intmain(){ MatImg=imread(“1.jpg”,0); if(!Img.data){cout<

大家好,又见面了,我是你们的朋友全栈君。

灰度图像遍历的三种方法

  • 通过指针访问 
  • 通过迭代器访问 
  • 动态地址计算,通过at()函数实现、

实现代码:

#include<opencv2/opencv.hpp>
#include<iostream>

using namespace cv;
using namespace std;
int main()
{
	Mat Img=imread("1.jpg",0);
	if(!Img.data)  
    {  
        cout<<"could not open"<<endl;  
        return -1;  
    }  
	imshow("src",Img);

	Mat d_Img = Img.clone();
	const int channels=d_Img.channels();

	int nRows=d_Img.rows;
	int nCols=d_Img.cols*channels;
    //用指针访问像素,速度最快
	uchar *p;
	for(int i=0;i<nRows;i++)
	{
		p=d_Img.ptr<uchar>(i);//获取每行首地址
		for(int j=0;j<nCols;++j)
		{
			if(p[j]>128)
				p[j]=0;
			else
				p[j]=255;
		}
	}

/*	//通过迭代器访问,最安全
	{
		MatIterator_<uchar>it,end;
		for(it=d_Img.begin<uchar>(),end=d_Img.end<uchar>();it!=end;++it)
		{
			if(*it>128)
				*it=0;
			else
				*it=255;
		}
	}
*/	
/*	// 动态地址计算,通过at()函数实现
	for(int i=0;i<d_Img.rows;++i)
	{
		for(int j=0;j<d_Img.cols;++j)
		{
			if(d_Img.at<uchar>(i,j)>128)
				d_Img.at<uchar>(i,j)=0;
			else
				d_Img.at<uchar>(i,j)=255;
		}
	}
	*/
	imshow("dst",d_Img);
	waitKey(0);
	return 0;
}

效果图:

opencv学习笔记之对灰度图像遍历的三种方法                opencv学习笔记之对灰度图像遍历的三种方法

       原图                              处理后图像

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/139836.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • SpringBoot笔记(7)

    SpringBoot笔记(7)

    2021年11月12日
    44
  • ESXI洗白安装黑群晖教程,附文件「建议收藏」

    ESXI洗白安装黑群晖教程,附文件「建议收藏」本教程旨在体验群晖的功能,建议您购买正版群晖。————————————————–分割线————————————————–所需文件下载地址:链接:https://pan.baidu.com/s/1YiUGNoghLd_kRoS7BecAwA提取码:w3pj————————————————–分割线-

    2022年6月13日
    213
  • 七、观察者模式——关注我,分享旅途最浪漫的瞬间! #和设计模式一起旅行#

    最浪漫的事就是在路上,身边有你陪伴!故事背景在路上,和设计模式MM,做过飞机,也骑过单车,从大中国到了东京,东京真的很热(知道那啥啥为什么叫东京热了吧)。这一路不断的分享我们走过的路和看过的风景,旅行就是如此的美好,看别人看的厌烦过的风景,走别人走了无数遍的路!只有自己走过了,才算是经历!(就如我的这一场设计模式的学习总计之路,不管有多少人分享过,我依然要自己在过一遍,其中的意…

    2022年2月27日
    164
  • Android MVP+RxJava+Retrofit (3) MVP+RxJava+Retrofit

    Android MVP+RxJava+Retrofit (3) MVP+RxJava+Retrofit

    2021年3月12日
    170
  • 论文DepthTrack: Unveiling the Power of RGBD Tracking阅读及代码讲解[通俗易懂]

    论文DepthTrack: Unveiling the Power of RGBD Tracking阅读及代码讲解[通俗易懂]最近终于有了一篇的顶会像样的RGBDtracking的论文了:ICCV2021:DepthTrack:UnveilingthePowerofRGBDTrackingGithub:https://github.com/xiaozai/DeT数据集简介这边看完就随手记录一下关键的部分:主要是创建了个大规模的RGBDtrackingbenchmark:DepthTrack(有数据集之后才能促进算法的研究),当然随之也搞了个baselinetracker—DeT,这也是现在搞d

    2022年9月14日
    2
  • libiconv.a_libiptc

    libiconv.a_libiptc来源:’http://dxwang.blog.51cto.com/384651/538113介绍由于历史原因,国际上的各国文字都是依赖于自己本国语言而编码的。后来,随着Internet的出现和各国之间逐渐频繁的文字交流(比如浏览国外的Web页面),编码之间的转换就显得非常重要。这时也出现了一个问题,很多字符在一种编码中出现而没有被另一种编码包含。为了解决这种编码带来的混乱,人们

    2025年6月10日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号