API:Mat、imread、namedWindow、imshow、cvtColor、imwrite
Mat
这是OpenCV一个基本图像容器,基本来讲Mat是一个类,由两个数据组成:矩阵头(包含矩阵尺寸、存储方法和地址等信息)和一个存储所有矩阵值的矩阵......其组成十分的复杂,但是你只要知道起是用一个存储图像的基本容器即可。
Mat scr;//创建一个名为src的Mat容器
cv::imread(const string& filename, int flags=1)
其功能是加载图像文件成为一个Mat对象,有两个参数;const string& filename:表示图像的文件名称,一般传入图片的路径。int flags=1:表示加载的图像是什么类型,支持常见的三个参数值;
IMREAD_UNCHANGED:(<0) 表示加载原图,不做任何改变‘。
IMREAD_GRAYSCALE:(0) 表示把原图作为灰度图像加载进来。
IMREAD_COLOR:(>0) 表示吧原图作为RGB图像加载进来。
第二个参数可省略,如果省略的话则默认加载原图。
注意:OpenCV支持JPG、PNG、TIFF等常见的格式图像文件加载。
src = cv::imread("E:/girl.jpg");//将E盘中girl.jpg读到src中,并以原图形式不作改变
src = cv::imread("E:/girl.jpg",IMREAD_UNCHANGED);//和上一样
src = cv::imread("E:/girl.jpg",IMREAD_GRAYSCALE);//将原图作为灰度图加载进来
src = cv::imread("E:/girl.jpg",IMREAD_COLOR);//将原图作为RGB图像加载进来
cv::namedWindow(const string& winname, int flags)
namedWindos功能是创建一个OpenCV窗口,它是由OpenCV自动创建与释放,你无需取销毁它。其二个参数:const string& winname:窗口标题中的窗口名称,可用作窗口标识符。int flags:窗口的标志。常用支持的标志是 CV_WINDOW_AUTOSIZE。如果设置了此项,则会自动调整窗口大小以适合显示的图像(请参阅 imshow()),并且您无法手动更改窗口大小。
namedWindow("A",CV_WINDOW_AUTOSIZE);//创建一个名为“A”的窗口,并将标志设置为CV_WINDOW_AUTOSIZE
cv::imshow( const string& winname , InputArray image )
顾名思义,其作用是用来在指定窗口中显示图像。搭配上面的namedWindow使用,namedWindow创建一个窗口,imshow将图像显示到创建的窗口。其两个参数: const string& winname:窗口的名称。InputArray image:要显示的图像。
函数imshow在指定窗口中显示图像。如果窗口是使用CV_WINDOW_AUTOSIZE标志创建的,则图像以其原始大小显示。否则,将缩放图像以适合窗口。该函数可以缩放图像,具体取决于其深度:
- 如果图像是 8 位无符号的,则按原样显示。
- 如果图像是 16 位无符号或 32 位整数,则将像素除以 256。即值范围 [0,255*256] 映射到 [0,255]。
- 如果图像是 32 位浮点,则像素值乘以 255。即值范围 [0,1] 映射到 [0,255]。
namedWindow("A",CV_WINDOW_AUTOSIZE);
imshow("A”,src);//将图片src显示到"A”窗口
cv::cvtColor ( const CvArr* src , CvArr* dst , int code , int dstCn =0 )
将图像从一种颜色空间转换为另一种颜色空间。
| 参数: |
|
|---|
Mat src,dst;
src = cv::imread("E:/girl.jpg");
cv::cvtColor(src,dst,COLOR_BGR2GRAY);//将src中的图片从RGB色彩空间转换到灰度色彩空间并赋给dst
cv::imwrite( const string& filename , InputArray image , const vector<int>& params =vector<int>() )
将图像保存到指定文件。
| 参数: |
|
|---|
cv::imwrite("E:/girl.jpg",src);//将src图像以jpg形式存到E盘并且名字为girl,也可为png,tif等格式
获得图像像素指针
Mat.ptr<uchar>(int i=0) 获取像素矩阵的指针,索引i表示第几行,从0开始计行数。
const uchar* current = src.ptr<uchar>(1); //获得src第1行的像素指针
saturate_cast<uchar> 这个函数的功能是确保RGB值得范围在0~255之间.
saturate_cast<uchar> (-100) 返回0 小于0返回0
saturate_cast<uchar> (280) 返回255 大于255返回255
saturate_cast<uchar> (100) 返回100 正常值直接返回
output[col] = saturate_cast<uchar>(5 * current[col] - (current[col - offsetx] + current[col + offsetx] + previous[col] + next[col]))//将几个像素叠加后确保其值在0-255
本文介绍了OpenCV中关键函数如imread、imshow等的使用方法,涵盖了图像读取、显示、颜色空间转换及保存等功能,并提供了详细的参数说明与示例。

996

被折叠的 条评论
为什么被折叠?



