在进行图像操作时,为加快图像的处理速度,往往需要对图像的局部进行操作,一般是设置ROI区域,然后对ROI区域进行二值化,在对灰度图进行特征的检测与提取。此方法可以大大加快图像处理的速度。
本博文结合opencv进行编写。程序如下:
cv::Mat GrayROIAddRGB(cv::Mat src) {
int x = 230;
int y = 90;
int width = 160;
int height = 160;
Mat imageROI = src(Rect(x, y, width, height));
//imshow("ROI", imageROI);
Mat mask = imageROI;
cvtColor(mask, mask, CV_RGB2GRAY);
threshold(mask, mask, 80, 255, THRESH_BINARY);
cvtColor(mask, mask, CV_GRAY2BGR);
//imshow("threshold", mask);
for (int i = 0; i < imageROI.rows; ++i){
Vec3b *p = imageROI.ptr<Vec3b>(i);
for (int j = 0; j < imageROI.cols; ++j) {
p[j][0] = 0;
p[j][1] = 0;
p[j][2] = 0;
}
}
mask.copyTo(imageROI, mask);
return src;
}
实验图如下:
1.原图
2.效果图