OpenCV学习记录Day 01

本文介绍了OpenCV中关键函数如imread、imshow等的使用方法,涵盖了图像读取、显示、颜色空间转换及保存等功能,并提供了详细的参数说明与示例。

 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 )

 将图像从一种颜色空间转换为另一种颜色空间。

参数:
  • src – 源图像:8 位无符号、16 位无符号 ( CV_16UC... ) 或单精度浮点。
  • dst – 与src具有相同大小和深度的目标图像 。
  • 代码- 色彩空间转换代码。COLOR_BGR2HLS :从RGB转换到HLSCOLOR_BGR2GRAY:从RGB转到灰度色彩空间.其他的代码详情查看官方Api
  • dstCn – 目标图像中的通道数。如果参数为 0,则通道数自动从src 和 code导出 。默认不写,不写为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>() ) 

将图像保存到指定文件。

参数:
  • filename-文件的名称。一般为地址“D:/girl.jpg”
  • image– 要保存的图像
  • params

    格式特定的保存参数编码为对 paramId_1, paramValue_1, paramId_2, paramValue_2, ...。目前支持以下参数:

    • 对于 JPEG,它可以是从 0 到 100(越高越好)的质量(CV_ IMWRITE _JPEG_QUALITY)。默认值为 95。
    • 对于 PNG,它可以是从 0 到 9的压缩级别 ( CV_ IMWRITE _PNG_COMPRESSION )。更高的值意味着更小的尺寸和更长的压缩时间。默认值为 3。
    • 对于PPM,PGM,或PBM,它可以是一个二进制格式标志(CV_ IMWRITE _PXM_BINARY),0或1默认值是1。
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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值