OpenCV寒假学习day06

OpenCV寒假学习Day06

1.图像ROI和ROI操作

1.1 矩形ROI区域提取

	int cy = h / 2;
	int cx = w / 2;
	Rect rect(cx - 100, cy - 100, 200, 200);
	Mat roi = src(rect);
	imshow("roi", roi);
先用rect类来获取图片中的ROI区域后再用mat类来定义roi。

1.2矩形ROI区域copy

	Mat image = roi.clone();
	// modify ROI
	roi.setTo(Scalar(255, 0, 0));
	imshow("result", src);

	// modify copy roi
	image.setTo(Scalar(0, 0, 255));
	imshow("result", src);
	imshow("copy roi", image);

先将roi进行clone,然后将roi的BGR通道设为255,0,0即蓝色。

1.3不规则ROI区域

1.3.1区域mask生成

	Mat hsv, mask;
	cvtColor(src2, hsv, COLOR_BGR2HSV);
	imshow("hsv", hsv);
	inRange(hsv, Scalar(35, 43, 46), Scalar(99, 255, 255), mask);
	imshow("mask", mask);

先将读取的让图片从BGR转为hsv
然后用inRange函数将背景和主题分离生成mask(绿色背景变为255白色,人主体变为0黑色)

1.3.2像素位 and操作

	Mat person;
	bitwise_not(mask, mask);
	bitwise_and(src2, src2, person, mask);
	imshow("person", person);

将mask取反则背景变为0黑色,主体变为255白色。
然后运用and获取ROI区域
关于mask(掩膜)的应用说明

1.3.3加背景

运用add等函数。

2.图像直方图

运用calcHist()函数来计算直方图,然后再用line将直方图画出。

3.直方图均衡化

运用equalizeHise()函数对直方图均衡化。
直方图均衡化原理及计算
由上文可知,均衡化有助于增加对比度(通过减少灰度),增加动态范围,是图片有更多的细节。

你可能感兴趣的:(OpenCV寒假学习day06)