opencv mat的常用操作

复制代码
#include <opencv2/opencv.hpp>
#include <iostream>
#include <math.h>
using namespace cv;
using namespace std;

int main()
{
    Mat src;
    //原图
    src = imread(".//pic//test.jpg",IMREAD_UNCHANGED);
    if (src.empty())
    {
        cout << "can not load image" << endl;
        return -1;
    }
    namedWindow("input", CV_WINDOW_AUTOSIZE);
    imshow("input", src);

    //创建Mat
    //Mat dst;
    //dst = Mat(src.size(), src.type());
    ////RGB三通道赋值
    //dst = Scalar(0, 0, 0);
    //namedWindow("output", CV_WINDOW_AUTOSIZE);
    //imshow("output", dst);

    //copy的使用
    Mat dst;
    //src.copyTo(dst);

    //色彩空间的转换
    cvtColor(src, dst, CV_BGR2GRAY);
    namedWindow("output", CV_WINDOW_AUTOSIZE);
    imshow("output", dst);

    printf("输入图像的通道数:%d\n", src.channels());
    printf("输出图像的通道数:%d\n", dst.channels());

    //输出某一个点的像素
    int cols = dst.cols;
    int rows = dst.rows;
    printf("rows:%d  cols:%d\n", cols, rows);
    const uchar* firstRow = dst.ptr<uchar>(0);
    printf("first pixel value: %d\n", firstRow[0]);

    //8:每个通道占8位
    //U:表示无符号
    //C:表示char类型
    //3:表示通道数目是3
    Mat M(3, 3, CV_8UC3, Scalar(0, 0, 255));

    Mat m1;
    m1.create(src.size(), src.type());
    m1 = Scalar(0, 0, 255);

    //定义卷积核
    Mat kernel = (Mat_<char>(3, 3) << 0, -1, 0, -1, 6, -1, 0, -1, 0);

    //定义对角矩阵
    Mat m2 = Mat::eye(2, 2, CV_8UC1);

    waitKey(0);
    return 0;
}
复制代码

 

posted @   喵小喵~  阅读(990)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core GC计划阶段(plan_phase)底层原理浅谈
· .NET开发智能桌面机器人:用.NET IoT库编写驱动控制两个屏幕
· 用纯.NET开发并制作一个智能桌面机器人:从.NET IoT入门开始
· 一个超经典 WinForm,WPF 卡死问题的终极反思
· ASP.NET Core - 日志记录系统(二)
阅读排行:
· 支付宝事故这事儿,凭什么又是程序员背锅?有没有可能是这样的...
· https证书一键自动续期,帮你解放90天限制
· 在线客服系统 QPS 突破 240/秒,连接数突破 4000,日请求数接近1000万次,.NET 多
· 推荐几个不错的 Linux 服务器管理工具
· C# 开发工具Visual Studio 介绍
历史上的今天:
2017-12-06 ARM嵌入式复习
2017-12-06 4.C语言文件操作
2017-12-06 3.c语言结构体成员内存对齐详解
2017-12-06 2.堆.栈和内存映射详解
2017-12-06 1.C语言指针学习之外挂篇
2015-12-06 sqldeveloper
点击右上角即可分享
微信分享提示