opencv入门教程 <一>

本篇博文作为系列博文的第一篇,主要讲解一些opencv的基本操作,包括读取、写回、访问像素、修改像素、显示照片。

  • 读取照片

所用函数:Mat
imread(const string& filename, int flags)
 (C++ function)

其中:filename为文件名,flags代表读取方式,默认情况下读取通道为3,当设置为0时,

读入灰度图.

使用方法:Mat src = imread("fruits.jpg");

注意:假设项目opencv_1,则需要将照片放置在../opencv_1/opencv_1目录下。

  • 写回照片

所用函数:bool imwrite(const string& filename,
InputArray img,

consvector<int>& params=vector<int>  () )

            其中:filename为文件名,img为将要保存的图片,第三个参数通常忽略。

使用方法:  imwrite("grey.jpg",grey);

注意:在保存的时候,文件名的后缀决定了文件的格式。

  • 访问像素

所用函数:Scalarintensity=img.at<uchar>(y,x);
(针对灰度图)

Vec3bintensity
=img.at<Vec3b>(y,x);(针对3通道图)

ucharblue=
intensity.val[0];

uchargreen=
intensity.val[1];

ucharred=
intensity.val[2];

注意:uchar为无符号字符,需要转化为整数方能正常显示。

  • 修改像素

所用函数:img.at<uchar>(y,x)=128;
(针对灰度图)

使用方法:grey.at<uchar>(grey.cols/2,grey.rows/2) = 255 ;

注意:255代表白色,0代表黑色。

  • 显示图片

所用函数:void imshow(const string& winname,
InputArray mat)

其中:winname为窗口的名称,mat为要现实的照片。

使用方法:imshow("test",grey);

注意:在显示图片时,不一定要显示创建窗口,系统会自行按需创建。

  • 综合例子
#include <cv.h>
#include <iostream>
#include <highgui.h>

using namespace cv;
using namespace std;

int main()
{
	//读取默认通道(3个通道)照片
	Mat src = imread("fruits.jpg");
	namedWindow("src", CV_WINDOW_AUTOSIZE);
	//获取照片中心像素值,包括三个分量
	Vec3b intensity = src.at<Vec3b>(src.cols/2, src.rows/2);
	uchar blue = intensity.val[0];
	uchar green = intensity.val[1];
	uchar red = intensity.val[2];

	cout<<"The blue value is "<<(int)blue<<endl;
	cout<<"The green value is "<<(int)green<<endl;
	cout<<"The red value is "<<(int)red<<endl;
	imshow("src",src);

	//读取灰度图,参数0代表单通道(灰度)
	Mat grey = imread("fruits.jpg",0);
	namedWindow("grey",CV_WINDOW_AUTOSIZE);
	imshow("grey",grey);
	//访问中心的像素值,获得一个范围在0-255之间的整数
	Scalar intensity_grey = grey.at<uchar>(grey.cols/2, grey.rows/2);
	cout<<"The grey value is "<<intensity_grey.val[0]<<endl;
	//设置中心的像素值
	grey.at<uchar>(grey.cols/2,grey.rows/2) = 255 ;
	imshow("test",grey);

	imwrite("grey.jpg",grey);

	waitKey(0);

	return 0;
}
  • 实验效果图

真实图片

灰度图

将中心点像素值改为255的结果

  • 本篇博文完整工程下载地址,工程名称为Opencv_1。

如有疑问或者建议,欢迎留言。。。

opencv入门教程 <一>

时间: 2024-10-26 12:04:23

opencv入门教程 <一>的相关文章

【OpenCV入门教程之三】 图像的载入,显示和输出 一站式完全解析

了解过之前老版本OpenCV的童鞋们都应该清楚,对于OpenCV1.0时代的基于 C 语言接口而建的图像存储格式IplImage*,如果在退出前忘记release掉的话,就会造成内存泄露.而且用起来超级麻烦,我们往往在debug的时候,很大一部分时间在纠结手动释放内存的问题.虽然对于小型的程序来说手动管理内存不是问题,但一旦我们写的代码变得越来越庞大,我们便会开始越来越多地纠缠于内存管理的问题,而不是着力解决你的开发目标. 这,就有些舍本逐末的感觉了. 而自从OpenCV踏入2.0时代,用Mat

【OpenCV入门教程之十七】OpenCV重映射 &amp; SURF特征点检测合辑

本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/30974513 作者:毛星云(浅墨)    微博:http://weibo.com/u/1723155442 知乎:http://www.zhihu.com/people/mao-xing-yun 邮箱: [email protected] 写作当前博文时配套使用的OpenCV版本: 2.4.9 本篇文章中,我们一起探讨了OpenCV中

系列文章 -- OpenCV入门教程

<OpenCV3编程入门>内容简介&勘误&配套源代码下载 [OpenCV入门教程之十八]OpenCV仿射变换 & SURF特征点描述合辑 [OpenCV入门教程之十七]OpenCV重映射 & SURF特征点检测合辑 [OpenCV入门教程之十六]OpenCV角点检测之Harris角点检测 [OpenCV入门教程之十五]水漫金山:OpenCV漫水填充算法(Floodfill) [OpenCV入门教程之十四]OpenCV霍夫变换:霍夫线变换,霍夫圆变换合辑 [Ope

【OpenCV入门教程之四】 ROI区域图像叠加&amp;初级图像混合 全剖析(转)

本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/20911629 作者:毛星云(浅墨)    邮箱: [email protected] 写作当前博文时配套使用的OpenCV版本: 2.4.8 在这篇文章里,我们一起学习了在OpenCV中如何定义感兴趣区域ROI,如何使用addWeighted函数进行图像混合操作,以及将ROI和addWeighted函数结合起来使用,对指定区域进行图像

【OpenCV入门教程之一】 安装OpenCV:OpenCV 3.0、OpenCV 2.4.8、OpenCV 2.4.9 +VS 开发环境配置

本系列文章由@浅墨_毛星云 出品.   文章链接:http://blog.csdn.net/poem_qianmo/article/details/19809337 1.下载和安装OpenCV SDK VS2010不用说,肯定都安装了吧.来说说当前最新的OpenCV版本2.4.8(2014年2月24日),2.4.9 (2014年4月)的下载和安装.与其说是安装,不如叫解压更加合适,因为我们下载的exe安装文件就是一个自解压程序而已. 在官网:http://opencv.org/上找到OpenCV

【OpenCV入门教程之十八】OpenCV仿射变换 &amp; SURF特征点描述合辑

本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/33320997 作者:毛星云(浅墨)    微博:http://weibo.com/u/1723155442 知乎:http://www.zhihu.com/people/mao-xing-yun 邮箱: [email protected] 写作当前博文时配套使用的OpenCV版本: 2.4.9 本篇文章中,我们一起探讨了OpenCV中

【OpenCV入门教程之六】 创建Trackbar &amp; 图像对比度、亮度值调整(转)

本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/21479533 作者:毛星云(浅墨)    邮箱: [email protected] 写作当前博文时配套使用的OpenCV版本: 2.4.8 这篇文章中我们一起学习了如何在OpenCV中用createTrackbar函数创建和使用轨迹条,以及图像对比度.亮度值的动态调整. 文章首先详细讲解了OpenCV2.0中的新版创建轨迹条的函数c

【OpenCV入门教程之十二】OpenCV边缘检测:Canny算子,Sobel算子,Laplace算子,Scharr滤波器合辑

本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/25560901 作者:毛星云(浅墨)    微博:http://weibo.com/u/1723155442 知乎:http://www.zhihu.com/people/mao-xing-yun 邮箱: [email protected] 写作当前博文时配套使用的OpenCV版本: 2.4.9 本篇文章中,我们将一起学习OpenCV中

opencv ,亮度调整【【OpenCV入门教程之六】 创建Trackbar &amp; 图像对比度、亮度值调整

http://blog.csdn.net/poem_qianmo/article/details/21479533 [OpenCV入门教程之六] 创建Trackbar & 图像对比度.亮度值调整 标签: opencvvs2010c++图像处理 2014-03-18 21:43 43189人阅读 评论(99) 收藏 举报  分类: [OpenCV](18)  目录(?)[+] 本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://blog.csdn.net/poem_qian