Opencv Line函数

Opencv Line函数学习

看OpenCV时看到自己不常用的Line函数时不禁想到之前每次对图像进行处理都是在已有图片上进行空域或者频域操作完成的,而如果要在图片上画框rect或者画线line是如何做到的呢,既然Line函数并没用可以选择的算法类型,那么用的是DDA或者Bresenham还是哪种方法呢(虽然不可能是DDA哈哈)?出于好奇心去看了OpenCV的源代码。

OpenCV源代码Line函数定义:

static void
Line( Mat& img, Point pt1, Point pt2,
      const void* _color, int connectivity = 8 )
{
    //必须为8连通或者4连通
    if( connectivity == 0 )
        connectivity = 8;
    else if( connectivity == 1 )
        connectivity = 4;
//迭代类
    LineIterator iterator(img, pt1, pt2, connectivity, true);
    int i, count = iterator.count;//p1,p2点间的像素总数
    int pix_size = (int)img.elemSize();//每个元素的数据大小
    const uchar* color = (const uchar*)_color;

    for( i = 0; i < count; i++, ++iterator )
    {
        uchar* ptr = *iterator;
        if( pix_size == 1 )
            ptr[0] = color[0];
        else if( pix_size == 3 )
        {
            ptr[0] = color[0];
            ptr[1] = color[1];
            ptr[2] = color[2];
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值