opencv 基本操作Mat

opencv处理的基本对象为Mat矩阵,先写一个实例为学习Mat的基本操作:

/*函数功能:创建Mat对象,并制定相应的值
创建一个小的Mat矩阵
向量多个数组合成1起就是一个向量如3个数
*/
#include<opencv2\opencv.hpp>
#include<iostream>
#include<stdio.h>


using namespace std;
using namespace cv;


int main()
{
Mat src;  //输入图像
src = imread("G:/users/cdm/documents/visual studio 2015/imageprocess/lena.jpg");
if (src.empty()) {
printf("不能加载图像\n");
return -1;
}
namedWindow("input image", CV_WINDOW_AUTOSIZE);
imshow("input image", src);    //第一个参数为显示窗口的名称,可以省略


//创建一个mat对象操作
Mat dst;


//对Mat对象进行操作  (创建一个和输入图像大小一样类型一致像素值为(0,0,255)的mat矩阵)
/*dst = Mat(src.size(), src.type());
dst = Scalar(0, 0, 255);
namedWindow("output image", CV_WINDOW_AUTOSIZE);
imshow("output image", dst);*/
//完全复制一个矩阵
//dst = src.clone();
//src.copyTo(dst);
//转化为灰度图像
cvtColor(src, dst, CV_BGR2GRAY);
printf("src channels:%d\n", src.channels());
printf("dst channels:%d\n", dst.channels());


const uchar *fisrtrow = dst.ptr<uchar>(0); //第一行的指针
printf("图像dst第一行的第一个像素值为%d\n", *fisrtrow);


//int row = dst.rows; //<=> int row = dst.row;
int row = dst.rows;
int col = dst.cols;
printf("row : %d col: %d\n", row, col);
namedWindow("output image", CV_WINDOW_AUTOSIZE);
imshow("output image", dst);


//创建一个8*8的8位3通道像素值为(0,255,0)的Mat矩阵
Mat m = Mat(8,8, CV_8UC3, Scalar(0, 255, 0));


cout << "m=" << endl << m <<endl;


Mat c;
c.create(4, 3, CV_8UC2); //create就三个参数
c = Scalar(127, 126);//scalar 的数必须与通道数一样
cout << "c=" << endl << c << endl;


//创建一个小数组或者小矩阵核
Mat b = (Mat_<float>(3, 3) << 0, -1, 0, 1, 5, 1, 0, 1, 0); //是双()
cout << "b=" << endl << b << endl;
namedWindow("m image", CV_WINDOW_AUTOSIZE);
imshow("m image", m);


waitKey(0);
return 0;


}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值