using namespace std;
using namespace cv;
int main(int argc, char** argv)
{
Mat src;
src = imread("111111.jpg" );
if (src.empty())
{
cout << "could not load image..." << endl;
return -1;
}
namedWindow("input", CV_WINDOW_AUTOSIZE);
imshow("input", src);
/*Mat dst;
dst = Mat(src.size(), src.type());
//RGB通道赋值
dst = Scalar(0, 0, 0);
namedWindow("output_dst", CV_WINDOW_AUTOSIZE);
imshow("output_dst", dst);*/
Mat dst;
//克隆图像
//dst = src.clone();
//使用src.coptTo(dst);一样的效果
//将src彩色图像转换成灰度图,放在dst内
cvtColor(src, dst, CV_BGR2GRAY);
printf("input image channels: %d \n", src.channels());
printf("output image channels: %d \n", dst.channels());
int cols = dst.cols;
int rows = dst.rows;
printf("rows:%d,cols:%d \n", rows, cols);
const uchar* fisrtRow = dst.ptr<uchar>(0);
printf("first pixel value: %d \n", *fisrtRow);
//自定义图像大小及初始化
//8UC3->8位,UC=unsigned char,3通道,与后面的Scalar一致
Mat M(100, 100, CV_8UC3, Scalar(0, 0, 255));
//Mat M(100, 100, CV_8UC1, Scalar(127));
//cout << "M=" << endl << M << endl;
//利用create创建一个图像,以src的尺寸和类型初始化m1
Mat m1;
m1.create(src.size(), src.type());
m1 = Scalar(0, 0, 255);
Mat csrc;
Mat kernel = (Mat_<float>(3, 3) << 0, -1, 0, -1, 5, -1, 0, -1, 0);
filter2D(src, csrc, -1, kernel);
//两种0值初始化
Mat m2 = Mat::zeros(src.size(), src.type());
Mat m3 = Mat::zeros(2, 2, CV_8UC1);
//Mat::eye初始化位单位矩阵
cout << "m3=" << endl << m3 << endl;
namedWindow("output_dst", CV_WINDOW_AUTOSIZE);
imshow("output_dst", m2);
waitKey(0);
return 0;
}
Mat类操作
最新推荐文章于 2024-04-03 11:23:15 发布