Opencv(c++基础)

Opencv其实就一个有关视觉处理的库,就和学C语言的时候用的math那一堆库一样。

先简单记录一些基础函数学习:

1.展示图片

2.灰度图片

3.调用摄像头

4.读取视频

1.展示图片

#include <opencv2/opencv.hpp>
#include <iostream>

using namespace std;
using namespace cv;

int main()
{
    Mat src = imread("Resources/cards.jpg");

    imshow("img", src);

    waitKey(0);
    return 0;
}

代码解释:

#include <opencv2/opencv.hpp>  
#include <iostream> 
分别引入opencv的库和c++的标准库
using namespace std;
using namespace cv;
这两句是引入工作空间,std是c++标准库的工作空间名,cv是opencv的工作空间名。

工作空间:是为了避免 如果两个库中有相同的函数名,在调用函数时会发生冲突。

Mat src = imread("Resources/cards.jpg");//其实是两条语句合在一起。分别为:
Mat src;//定义一个Mat类型的变量,变量名是src
src = imread("bilibili.jpg");//调用imread函数读取图片并把这张图片赋值给src。

imshow("img",src);//调用函数imshow展示图片,第一个参数img是显示图片所用的窗口的名字,src是上面刚刚被一张图片赋值的变量。

waitkey(0);//显示图片后开始等待下一步操作。如果不加这条命令的话,自己屏幕上会有一个黑框一闪而过,
//图片也不会显示出来,因为程序没有停下来,显示图片后直接关闭了程序。

其中的cards.jpg图片是放在资源文件Resources内的,如果放在与cpp相同的文件夹内的话,就可以直接读取,或者可以使用图片所在位置的绝对路径。

效果:

2.灰度照片

读取灰度照片有两种方法:一种是在读取照片的时候就按照灰度格式读取,第二种是先读取之后再转换。

第一种方法:

#include <opencv2/opencv.hpp>  
#include <iostream> 
using namespace std;
using namespace cv;
int main()
{
 Mat src = imread("Resources/cards.jpg",0);
 
 imshow("img",src);
 
 waitKey(0);
 return 0;
}

代码解释:

与之前的代码唯一区别就是imread的参数不同
Mat src = imread("Resources/cards.jpg",0);
 //imread()函数有两个参数,第一个参数是图片的路径或图片的名字,第二个参数是以何种格式来读取图片。
 //默认值是1,也就是原本的格式读取;如果输入参数为0的话就是以黑白格式读取。

第二种方法:

#include <opencv2/opencv.hpp>  
#include <iostream> 
using namespace std;
using namespace cv;
int main()
{
 Mat src = imread("Resources/cards.jpg");
 Mat dst;
 cvtColor(src,dst,COLOR_BGR2GRAY);
 imshow("img",dst);
 
 waitKey(0);
 return 0;
}

代码解释:

//我们的操作是新建了一个Mat对象dst,又调用了函数cvtColor()来进行图片的灰度化,最终显示的图片也变成了dst。
 cvtColor(src,dst,COLOR_BGR2GRAY);//第一个参数是输入图像,第二个参数是输出图像,第三个参数是进行何种转换。

效果:

3.调用摄像头

#include <opencv2/opencv.hpp>  
#include <iostream> 

    using namespace cv;
    using namespace std;

    int main()
    {
        VideoCapture cap(0);
        Mat img;
        while (true) {
            cap.read(img);
            imshow("Image", img);
            waitKey(1);
        }

        return 0;
    }

代码解释:

        VideoCapture cap(0);//调用笔记本内置摄像头,所以参数为0,如果有其他的摄像头可以调整参数为1,2
        Mat img;//定义Mat图像变量
        //循环
        while (true) {
            cap.read(img);//获取摄像头画面
            imshow("Image", img);//读取摄像头画面
            waitKey(1);//延时1s
        }

4.读取视频

#include <opencv2/opencv.hpp>  
#include <iostream> 
using namespace std;
using namespace cv;
int main() {
    string path = "Resources/test_video.mp4";
    VideoCapture cap(path);
    Mat img; 

    while (1) {
        cap.read(img);
        imshow("Image", img);
        waitKey(1);

    }
    return 0;
} 

代码解释:

    string path = "Resources/test_video.mp4";//变量保存视频
    VideoCapture cap(path);//读取视频
    Mat img; 
    //循环
    while (1) {
        cap.read(img);//获取视频
        imshow("Image", img);//读取播放视频
        waitKey(1);//延时

    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值