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。
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即蓝色。
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黑色)
Mat person;
bitwise_not(mask, mask);
bitwise_and(src2, src2, person, mask);
imshow("person", person);
将mask取反则背景变为0黑色,主体变为255白色。
然后运用and获取ROI区域
关于mask(掩膜)的应用说明
运用add等函数。
运用calcHist()函数来计算直方图,然后再用line将直方图画出。
运用equalizeHise()函数对直方图均衡化。
直方图均衡化原理及计算
由上文可知,均衡化有助于增加对比度(通过减少灰度),增加动态范围,是图片有更多的细节。