我们在今天图像处理的时候,免不了会对图像进行截图,选取适合工程的roi,opencv给我们提供了多种选择的截图方式,包括矩形截图(这是比较常用的方式,操作也比较简单,有直接的函数可以进行调用),任意的roi(这种方式相对来说不是特别简单,没有直接的函数进行调用)下面进行总结一下常用的几种方式。
1.矩形截图
Mat image= imread(image);
Rect rect(10, 10, 20, 2);
Mat image_roi = image(rect);
其中:Rect的函数定义为: Rect(_Tp _x, _Tp _y, _Tp _width, _Tp _height);
_Tp _x:表示矩形左上角顶点的x坐标; _Tp _y:表示矩形左上角顶点的y坐标;
_Tp _width:表示矩形框的宽度 ; _Tp _height:表示矩形框的高度
2.矩形截图的另一种方式
Mat image= imread(image);
Mat imgROI1 = image(Range(190, 400), Range(80, 550));
其中190为起始像素行,400为终点像素行,80为起始像素列,550为终止像素列。
3.任意图像的roi截取
int changeImg(Mat img1,Mat &dst)
{
cout<
Mat roi = Mat::zeros(img1.size(),CV_8U);
vector> contour_left;
vector pts_left;
pts_left.push_back(Point(262,277));
pts_left.push_back(Point(277,20));
pts_left.push_back(Point(257,16));
pts_left.push_back(Point(248,255));
//pts.push_back(Point(50,250));
contour_left.push_back(pts_left);
drawContours(roi,contour_left,0,Scalar::all(255),-1);
img1.copyTo(dst,roi);
}
int main()
{
Mat dst, das;
int status1 = 0,status2 = 0,status3 = 0;
//输入图像
Mat img1 = imread("./1.jpg");
Mat img2 = imread("./2.jpg");
changeImg(img1,dst);
changeImg(img2,das);
return 0;
}
只能截取整张图片的roi,部分的不能进行,如果想要比较小的图片,还是要在此基础上进行矩形切图
声明:本文为原创,作者为 lijingle,转载时请保留本声明及附带文章链接:https://www.lijl888.com/archives/117
赏 感谢您的支持
感谢您的支持
感谢您的支持