【图像处理】OpenCV系列三十--- clipLine、drawMarker函数详解

上一节我们学习了基本的绘图函数,相信大家学习之后,已经有了基本的认识,从现在,本节呢,我们学习clipline和drawmarker函数。
一、clipline()函数详解1、函数原型
// 原型一
// 如果直线line任何一部分在图像大小size内,则返回true
bool clipline(size imgsize,
cv_in_out point& pt1,
cv_in_out point& pt2);
// 原型二
// 如果直线line任何一部分在图像大小size内,则返回true
bool clipline(size2l imgsize,
cv_in_out point2l& pt1,
cv_in_out point2l& pt2);
// 原型三
// 如果直线line任何一部分在矩形 imgrect内,则返回true
bool clipline(rect imgrect,
cv_out cv_in_out point& pt1,
cv_out cv_in_out point& pt2);
2、函数功能
判断一条直线是否在矩形内;
3、参数详解
第一个参数,size imgsize,如果直线line任何一部分在图像大小size内,则返回true;第二个参数,rect imgrect,如果直线line任何一部分在矩形 imgrect内,则返回true;第三个参数,cv_in_out point& pt1,直线的第一个端点;第四个参数,cv_in_out point& pt2,直线的第二个端点;4、实验实例
#include
#include
using namespace std;
using namespace cv;
int main(int argc, char** argv)
{
bool res = clipline(size(100, 100),
point(101, 101), point(120, 120));
if (res)
{
cout << 直线在size内部 << endl;
}
else
{
cout << 直线不在size内部 << endl;
}
bool resrect = clipline(rect(100, 100, 100, 100),
point(51, 51), point(201, 201));
if (resrect)
{
cout << 直线在rect内部 << endl;
}
else
{
cout << 直线不在rect内部 << endl;
}
system(pause);
return 0;
}
4、实验结果
实验结果
一、drawmarker()函数详解1、函数原型
void drawmarker(inputoutputarray img,
point position,
const scalar& color,
int markertype = marker_cross,
int markersize = 20,
int thickness = 1,
int line_type = 8);
2、函数功能
在图像预定义的位置上绘制标记;
目前支持几种标记类型:
(1) marker_cross,十字标记形状;
(2) marker_tilted_cross,一个45度倾斜的十字标记形状;
(3) marker_star,星标形状,交叉和倾斜交叉的组合;
(4) marker_diamond,钻石标记形状;
(5) marker_square,方形标志形状;
(6) marker_triangle_up,一个向上指向的三角形标记形状;
(7) marker_triangle_down,向下指向三角形标志形状;
3、参数详解
第一个参数,inputoutputarray img,待绘制标记的图像;第二个参数,point position,绘制的中心坐标;第三个参数,const scalar& color,绘制标记的颜色;第四个参数,int markertype = marker_cross第五个参数,int markersize = 20,第六个参数,int thickness = 1,线段的粗细;第七个参数,int line_type = 8线的类型:
filled,填充;
line_4,4连通的线条;
line_8 ,8连通的线条;
line_aa ,抗锯齿线条;
4、实验实例
#include
#include
using namespace std;
using namespace cv;
// 原始图像
mat src;
// 标记的类型
int value = 1;
// 回调函数
void onmark(int, void*)
{
// 对原始图像进行备份
mat dst = src.clone();
// 绘制标记
drawmarker(dst,
point(src.cols / 2, src.rows / 2),
scalar(0, 255, 0), value, 100, 3);
// 显示绘制标记后的图像
imshow(src, dst);
}
int main(int argc, char** argv)
{
// 载入图像
src = imread(lena.png);
// 判断图像是否为空
if (src.empty())
{
cout << image error! << endl;
return -1;
}
// 创建窗口
namedwindow(src);
// 创建滑动条
createtrackbar(绘制标记, src, &value, 6, onmark);
// 调用回调函数
onmark(value, 0);
waitkey(0);
return 0;
}
5、实验结果
十字标记
45度十字标记
星标形状,交叉和倾斜交叉的组合
钻石标记
方形标志形状
向上指向三角形标志形状
向下指向三角形标志形状
我是奕双,现在已经毕业将近两年了,从大学开始学编程,期间学习了c语言编程,c++语言编程,win32编程,mfc编程,毕业之后进入一家图像处理相关领域的公司,掌握了用opencv对图像进行处理,如果大家对相关领域感兴趣的话,可以关注我,我这边会为大家进行解答哦!如果大家需要相关学习资料的话,可以私聊我哦!

为了养肉,智力无穷!我在3D城市“竖着”养多肉!
河南水池防渗膜规格
办公室白色吊顶天花
大口径保温钢管——钢套钢直埋保温管
广东教育加盟好项目,高效阅读加盟,约读书房带你全面推广阅读
【图像处理】OpenCV系列三十--- clipLine、drawMarker函数详解
立式压扁压块机价格多少立式压块机
资阳大量hdpe批发中空壁塑钢缠绕管
现货供应BIT1605
米桶储米箱专卖
厂家批发碰焊网建筑用网金属筛网不锈钢网
海水系统防腐复合管道厂家-公司动态
吉林哪里有梨树苗卖园艺场
演播室灯光装修方案/实景演播室系统/超清4K演播厅蓝箱建设
6%+抗溶性+氟蛋白+环保型泡沫灭火剂
sbr1120防爆道路灯,sbr6120-ql120r01
铝箔纸撕碎机买卖更划算撕碎机油轮撕碎机
恭城弘邦通信 720芯光纤配线架 价格
2019常州移动电视广告价格*广告费用*广告媒介
蚂蚱大量养殖后,市场需求如此紧缺,掌握这几个市场渠道很关键