OpenCV学习笔记

初次学习计算机视觉,接触到了opencv这个开源的计算机视觉库,现在开始逐渐整理学习过程中自己遇到的最基本东西,因为自己比较笨,所以便把自己在学习中遇到的各种奇葩简单问题都一一记录下来,希望对初学的你有所帮助。大佬就忽略我的存在吧。

1.什么是命名空间? using namespace cv;在写代码的时候会经常用到这个,这是表示使用CV这个库的命名规则,如果定义了,后面就可以直接定义Mat类型的变量了,如果没有定义,就需要在Mat前面加上cv::Mat的前缀。

2.输入输出流。因为opencv的编写是c和c++基础上的,所以,而在现在的opencv3.0版本以上大都是在c++程序下来完成的,所以c++的输入cin 和 输出cout就会使用频繁,那么基本的格式如下:
输入 cin >>变量1>>变量2>>…..>>变量n。 例如:video >>frame。就是指把video的内容流给frame。
输出cout<<表达式1<<表达式2<<…..<<表达式n。 cout << “显示的内容” << endl;

3.读入和显示图片。要先定义Mat类型 读入 Mat img = imread(“1.jpg”); 需要注意的是。img是自己定义的变量名,可以随便定义,而1.jpg。要注意是jpg格式,文件名为1的图片,刚开始在学的时候不知道,就把图片的名字改为1.jpg。因此搞了好久才发现这个错误。
显示 imshow(“显示的图片”,img); 显示的图片是窗口的名字,img是要显示的图片变量名。

4 .读取视频和调用摄像头。在opencv中读取视频时,就是先读入一个视频,然后通过循环一帧一帧的循环读入,这样就把一个视频给显示出来了。但要注意的是循环条件,可以是死循环(就是循环播放),也可以先获取是视频的总帧数(播放完就结束了)。而死循环可以在循环体内设置一个跳出语句,如果满足则跳出。具体代码实现如下:

`#include   //引用opencv2的头文件
using namespace cv;   //使用命名空间

int main()
{
    VideoCapture    capture("1.avi");//读取文件名为1,avi格式的视频。

while (1)
{
    Mat  frame;//定义Mat变量,用于存放每一帧的图像
    capture  >>  frame;//读取当前帧                                                                                                                                          
    if(frame.empty())   break;//若视频播放完成则退出循环

   imshow("读取视频",frame);
   waitKey(30);
   }
   return 0;
   }

5.cvtColor()函数 cvtColor 函数是OpenCV里面的颜色空间转化函数,可以实现RGB颜色转向HSV,HSI等颜色空间的转换,也可以转换为gray灰度图像。基本格式是 cvtColor( src, dst, CV_RGB2GRAY). 把 RBG彩色的图像转换为GRAY灰度图像。 cvtColor( src, dst, CV_RGB2HSV). 把RGB彩色图像转换为HSV图像。 其中的src 是要处理的图像变量名,而dst 是处理后的图像变量名。 这里补充一下什么是HSV颜色模型,要说到HSV就要和RGB对比来说,会有更直观的理解。
HSV(Hue,Saturation,Value)是根据颜色的直观特性 色调(H)、饱和度(S)、明度(V)。
RGB (Red, Green, Blue) 是三种色光原色。 这在opencv 中是三通道的颜色,取值范围是0~255 取值越高,颜色越明亮。R、G、B都为0时是黑色,都为255是白色。
RGB是电脑设计中最直接的色彩表示方法。通过三种的不同组合可以达到想要的各种颜色。但是RGB数值和色彩的三属性并没有直接的联系,不能直接的揭示色彩之间的关系。所以在进行配色设计时,RGB模型就不是那么合适了。RGB是面向硬件的,而HSV是面向用户的。HSV本质上和RGB模式没有区别,只是产生颜色的方式不同。

你可能感兴趣的:(opencv学习笔记,计算机视觉,opencv)