opencv常用api
opencv常用api
截取图像
cv::Mat pic2;
pic(cv::Rect(50, 50, 200, 200)).copyTo(pic2);
cv::imshow("Image Display2", pic2);
将图像区域复制到图像指定的区域
pic2.copyTo(pic(cv::Rect(200, 200, 200, 200)));
cv::imshow("Image Display3", pic);
通过迭代器获取图像像素
void ModifyColorData(cv::Mat& img , cv::Mat& out , int pixel) {
// 通过迭代器获取图像的像素
out = img.clone();
cv::Mat_<cv::Vec3b>::iterator itstart = out.begin<cv::Vec3b>();
cv::Mat_<cv::Vec3b>::iterator itend = out.end<cv::Vec3b>();
for (; itstart != itend; itstart++) {
(*itstart)[0] = (*itstart)[0] / pixel * pixel + pixel / 3;
(*itstart)[1] = (*itstart)[1] / pixel * pixel + pixel / 3;
(*itstart)[2] = (*itstart)[2] / pixel * pixel + pixel / 3;
}
cv::imshow("目标图像", out);
/*
vec3b
* 全部类型为 cv::Vec{2,3,4,6,8}{b,d,f,i,s,w}
* 其中数字2,3,4,6,8表示列向量的长度
* 字母 b ,d , f, i ,s ,w表示类型
* b-->uchar , d-_>double , f-->float , i-->int , s-->showt , w-->ushort
* 数字和类型之间的组合,构成不同的Vec向量
*/
}
绘制直线
void drawLine(cv::Mat& img) {
// 定义点 ,第一种方式
cv::Point p1 = cv::Point(20, 30);
// 定义点 ,第二种方式
cv::Point p2;
p2.x = 250;
p2.y = 30;
// 定义线的颜色
cv::Scalar myColor = cv::Scalar(0,0,255); // bgr
// 在背景绘制线条
cv::line(img, p1, p2, myColor , 5 , cv::LINE_8); // cv::LINE_8
}
绘制矩形
void drawrectangle(cv::Mat& img) {
cv::Rect rect = cv::Rect(50, 50, 250, 300);
// 设置颜色
cv::Scalar color = cv::Scalar(255, 0, 0);
cv::rectangle(img, rect, color, 3, cv::LINE_8);
}
绘制圆
void drawcircle(cv::Mat& img) {
// 确定圆心
cv::Point point = cv::Point(img.cols / 2, img.rows / 2);
// 设置颜色
cv::Scalar color = cv::Scalar(0, 255, 0);
// 绘制园
cv::circle(img, point, 100, color, 2 , cv::LINE_8);
}
绘制椭圆
void drawellipse(cv::Mat& img) {
// 确定圆心
cv::Point point = cv::Point(img.cols / 2, img.rows / 2);
// 设置颜色
cv::Scalar color = cv::Scalar(0, 255, 255);
cv::ellipse(img , point , cv::Size(20, 50) , 0 , 0 , 360 , color);
}
绘制多边形
void drawpolyline(cv::Mat& img) {
// 定义多边形的顶点坐标
std::vector<cv::Point> pts;
pts.push_back(cv::Point(50, 50));
pts.push_back(cv::Point(200, 50));
pts.push_back(cv::Point(200, 200));
pts.push_back(cv::Point(50, 200));
cv::polylines(img , pts , true , cv::Scalar(0, 255, 0) , 3 , cv::LINE_8);
}
原文地址:https://blog.csdn.net/jianfeng123123/article/details/143758401
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!