opencv2.4.3通过不同方式访问图像像素

 2023-09-11 阅读 20 评论 0

摘要:通过不同方式访问图像像素 最近在学习vs2010并结合opencv2.4.3进行图像处理,首先研究了在opencv中如何去访问像素,查阅资料,浏览博客,总结了一下,一般有三种方法:Mat类的.at()函数,指针,迭代器,代码如下

通过不同方式访问图像像素

最近在学习vs2010并结合opencv2.4.3进行图像处理,首先研究了在opencv中如何去访问像素,查阅资料,浏览博客,总结了一下,一般有三种方法:Mat类的.at()函数,指针,迭代器,代码如下:

// sy1.cpp : 定义控制台应用程序的入口点。

/通过不同的方式去访问图像像素/

#include "stdafx.h"

#include "opencv2/highgui/highgui.hpp"

#include "opencv2/core/core.hpp"

#include "opencv2/imgproc/imgproc.hpp"

#include <iostream>

using namespace std;

using namespace cv;

 

int _tmain(int argc, _TCHAR* argv[])

{

double t1=(double)getTickCount();//记录起始时间

Mat img=imread("C:\\Users\\Administrator\\Desktop\\002.bmp");

Mat img_gray;

cvtColor(img,img_gray,CV_RGB2GRAY);//彩图转为灰度图

imwrite("C:\\Users\\Administrator\\Desktop\\002ff.bmp",img_gray);

Mat img2(img_gray.rows,img_gray.cols,CV_8U);

/指针访问/

int i,j;

uchar*  pt;

for (i=0;i<img_gray.rows;i++)

{

pt=img_gray.ptr<uchar>(i);//获取第i行的首地址

for (j=0;j<img_gray.cols;j++)

{

if (pt[j]>100)//第i行的第j个像素

{

img2.at<uchar>(i,j)=255;

}

else

img2.at<uchar>(i,j)=0;

}

}

///最简单的.at()函数//

不推荐此方式,太慢/

int i,j;

for (i=0;i<img_gray.rows;i++)

{

for (j=0;j<img_gray.cols;j++)

{

if(img_gray.at<uchar>(i,j)>100)

img2.at<uchar>(i,j)=255;

else

img2.at<uchar>(i,j)=0;

}

}

/使用迭代器去访问//

///速度不是最快的,但是安全/

Mat_<uchar>::iterator it=img_gray.begin<uchar>();//获得初始位置迭代器

Mat_<uchar>::iterator it1=img2.begin<uchar>();

while(it!=img_gray.end<uchar>())

{

if (*it>100)

{

(*it1)=255;

}

else

{

(*it1)=0;

}

++it;

++it1;

}

double t2=(double)getTickCount();//结束时间

double t3=(t2-t1)/getTickFrequency();//耗时

cout<<t3<<"s"<<endl;

namedWindow("ff");

imshow("ff",img2);

imwrite("C:\\Users\\Administrator\\Desktop\\shiyan.bmp",img2);

waitKey(0);

return 0;

}

总结,指针的方法是最快的;at()函数法最慢,但是理解起来方便;迭代器法居中,但是安全。

 

 

 

 

opencv2?转载于:https://www.cnblogs.com/freecloudinsky/p/3424352.html

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/4/46250.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息