您当前的位置: 首页 >  opencv

暂无认证

  • 0浏览

    0关注

    101061博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

实践教程 | 万字长文,值得收藏/参考的OpenCV C++基础代码

发布时间:2021-08-18 07:00:00 ,浏览量:0

点击上方“3D视觉工坊”,选择“星标”

干货第一时间送达

作者丨卡拉肖克-X

来源丨OpenCV学堂

编辑丨极市平台

导读

 

一位友好人士做的B站OpenCV4.x C++ 快速入门30讲视频课程的笔记总结!

01 环境搭建

环境配置了一个早上,到10.48分配置完毕,有点难受。还好最后显示出第一张图片。

#include
#includeusingnamespacestd;
usingnamespace cv;
int main() 
{

    Mat src = imread("D:/images/011.jpg",IMREAD_GRAYSCALE);//读取进来的数据以矩阵的形势,第二个参数代表显示一张灰度图像。
    if (src.empty()) 
    {
        printf("could not load image");//如果图片不存在 将无法读取,打印到终端。
    }
    //超过屏幕的图像无法显示时候调用此函数。
    namedWindow("输入窗口", WINDOW_FREERATIO);//创建了一个新窗口,参数1表示名称,第二个参数代表一个自由的比例
    imshow("输入窗口", src);//表示显示在新创建的输入窗口上,第一个参数表示窗口名称,src表示数据对象Mat 
    waitKey(0);//执行到这句,程序阻塞。参数表示延时时间。单位ms
    destroyAllWindows();//销毁前面创建的显示窗口
    return0;
}

第一节课介绍了如何读取第一张图片,并且显示出来,通过调用imread函数读取照片,再调用imshow显示图片到窗口。同时,讲述了如何打印灰度图像,图片读取失败的处理方式,代码注释详细介绍了每条语句的意思。

02 显示图象

1、色彩空间转换函数 cvtColor 2、图像的保存

#include
using namespace cv;

class QuickDemo //创建一个QuickDemo对象
{
    public:
        void colorSpace_Demo(Mat &imge); //定义一个类,里面包含输入一个图片,对图片操作
};

#include
void QuickDemo::colorSpace_Demo(Mat &image)
{
    Mat gray, hsv;//定义2个矩阵类的图像gray和hsv,
    cvtColor(image,hsv,COLOR_BGR2HSV);//图像转换函数,可以把image转成hsv,第三个参数是转成的类型
    cvtColor(image,gray,COLOR_BGR2GRAY);//图像转换函数,可以把image转成hsv,第三个参数是转成的类型
    imshow("HSV",hsv);
    imshow("灰度",gray);
    imwrite("D:/hsv.jpg",hsv);//保存图片,前面是保存图的地址,后面是保存图的名称
    imwrite("D:/gray.jpg",gray);
}

#include
#include#include

using namespace std;
using namespace cv;
int main() 
{

    Mat src = imread("D:/images/1.jpg",IMREAD_ANYCOLOR);//B,G,R实际上0-255三色。3通道
    //读取进来的数据以矩阵的形势,第二个参数代表显示一张灰度图像。
    if (src.empty()) 
    {
        printf("could not load image");//如果图片不存在 将无法读取,打印到终端。
        return-1;
    }
    //超过屏幕的图像无法显示时候调用此函数。

    namedWindow("输入窗口", WINDOW_FREERATIO);//创建了一个新窗口,参数1表示名称,第二个参数代表一个自由的比例
    imshow("输入窗口", src);//表示显示在新创建的输入窗口上,第一个参数表示窗口名称,src表示数据对象Mat 
//在主函数中调用之前创建的类对象    
    QuickDemo qd;
    qd.colorSpace_Demo(src);

    waitKey(0);//执行到这句,程序阻塞。参数表示延时时间。单位ms
    destroyAllWindows();//销毁前面创建的显示窗口
    return0;
}

这节主要介绍了创建一个类对象,然后通过类对象调用函数,在main主函数中进行调用实现类对象中的功能,比如转换成HSV类型图片和GRAY类型图片,最后通过imwrite函数进行图像的保存。

03 图像对象的创建与赋值

1、怎么操作mat 2、怎么访问每一个像素点 3、怎么创建一个空图或者mat

void QuickDemo::mat_creation_demo(Mat &image) 
{
    Mat m1, m2;
    m1 = image.clone();
    image.copyTo(m2);

    //创建空白图像
    Mat m3 = Mat::ones(Size(400, 400), CV_8UC3);//创建8*8的CV8位的无符号的n通道的unsigned char
    //ones&zeros是初始化的方法
    m3 = Scalar(255, 0, 0);//给三个通道都赋值127  ,单通道赋值方法 m3 = 127;
    //m3初始为蓝色
    //数据的宽度和长度是由通道数决定的。
    //std::cout << "width:"<            
关注
打赏
1655516835
查看更多评论
立即登录/注册

微信扫码登录

0.0886s