opencv 第一天

读入图像:Mat src = imread("C:/1/image/sanshangyouya.jpg");
判断是否成功读入图像:
if (src.empty()) //if(!src.data()) { printf("读取错误!"); return 0; }
用opencv创建一个名为input image的窗口,窗口的大小为自动:
namedWindow("input image", CV_WINDOW_AUTOSIZE);
用input image的窗口显示读入的图片:imshow("input image", src);
cvtColor——把图象从一个色彩空间转换为另一个色彩空间:cvtColor(src, dst, CV_BGR2HLS);
保存图像:imwrite("c:/1/test.png",dst);
获得一个图像的宽:int cols = src.cols*src.channels();//src.channels()为该图像的通道数
获得图像的高:int rows = src.rows;
初始化图像dst为大小与类型与scr相同的空白图像:dst = Mat::zeros(src.size(), src.type());
获取当前像素指针:

const uchar *current = src.ptr(row);
        current[col];//当前像素的位置

矩阵掩模操作:

#include
#include
#include

using namespace cv;

int main(int argc, char** argv)
{
	Mat src, dst;
	src = imread("C:/1/image/2.jpg");
	if (src.empty())
	{
		printf("读取错误!");
		return 0;
	}

	namedWindow("input image", CV_WINDOW_AUTOSIZE);
	imshow("input image", src);

	/*cvtColor(src, dst, CV_BGR2HLS);
	namedWindow("output image", CV_WINDOW_AUTOSIZE);
	imshow("output image", dst);*/

	int cols = (src.cols-1)*src.channels();
	int rows = src.rows;
	int channel = src.channels();
	dst = Mat::zeros(src.size(), src.type());
	printf("%d %d %d", cols, rows, channel);

	/*for(int row=1;row<(rows-1);row++)
	{

		const uchar *previous = src.ptr(row - 1);
		const uchar *current = src.ptr(row);
		const uchar *next = src.ptr(row + 1);
		uchar *output = dst.ptr(row);
		for (int col = 3; col (5 * current[col] - (current[col - channel] + current[col + channel] + previous[col] + next[col]));

		}
	}*/
	Mat kernel = (Mat_(3, 3) << 0, -1, 0, -1, 5, -1, -0, -1, -0);
	filter2D(src, dst, src.depth(), kernel);
	namedWindow("output image", CV_WINDOW_AUTOSIZE);
	imshow("output image", dst);


	waitKey(0);
	return 0;
	}

你可能感兴趣的:(opencv)