mat对象

#include<opencv2/opencv.hpp>
#include<iostream>
using namespace std;
using namespace cv;
int main(int srgc, char**argv)
{
Mat src, dst1,dst;
src = imread("D:/test1.jpg");//读取图像的绝对位置,注意“/”与‘\\’的不同,容易产生 某某.exe中的 0x75065b68 处有未经处理的异常 :Microsoft C ++ 异常; 内存位置 0x85e790 处的 cv: :Exception 。的问题。
if (src.empty())
{
cout << "could not load..\n" << endl;
return -1;
}
namedWindow("input", CV_WINDOW_AUTOSIZE);
imshow("input", src);
resize(src, dst1, Size(), 0.5, 0.5);//利用双线性插值使图像长与宽减半
namedWindow("suoafang", CV_WINDOW_AUTOSIZE);
imshow("suofang", dst1);
/*dst = Mat(src.size(), src.type());//构造一个与src同类型同尺寸的dst图像
dst = Scalar(122, 0, 255);
namedWindow("output", CV_WINDOW_AUTOSIZE);
imshow("output", dst);*/
//dst = src.clone();
//src.copyTo(dst);
        

cvtColor(src, dst, CV_BGR2GRAY);//获取灰度图像
printf("input image channel:%d\n", src.channels());
printf("output image channel:%d\n", dst.channels());


int rows = dst.rows;
int cols = dst.cols;
const uchar* firstRow = dst.ptr<uchar>(0);//获取第一行第一个元素的指针
printf("first pixel value: %d\n", *firstRow);
printf("rows=%d\n", rows);
printf("cols=%d\n", cols);


Mat M(300, 400, CV_8UC3, Scalar(0, 0, 255));//定义3*3像素集合,,可验证算法准确性
//cout << "M=" << endl << M << endl;


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


Mat kernel = (Mat_<float>(3, 3) << 0, -1, 0, -1, 5, -1, 0, -1, 0);
filter2D(src, dst, -1, kernel);//用小数组实现矩阵掩膜

        //获得2*2的零矩阵
//Mat m2 = Mat::zeros(2, 2, CV_8UC1);
//cout << "m2" << endl << m2 << endl;
//获得2*2的单位矩阵
Mat m2 = Mat::eye(2, 2, CV_8UC1);

cout << "m2" << endl << m2 << endl;


namedWindow("output", CV_WINDOW_AUTOSIZE);
imshow("output", dst);


waitKey(0);
}

猜你喜欢

转载自blog.csdn.net/terry_n/article/details/80286106