Android Opencv(四)

138人阅读 评论(0) 收藏 举报
分类:

图层金字塔与reSize

Pyramid中文金字塔,因此pyrDown和pyrUp函数也是十分形象的,
pyrDown和pyrUp都是先进行了5x5的高斯模糊,再进行了大小的改变。
pyrDown和pyrUp每调用一次,只能缩小2倍或者放大2倍。如果就单纯的图片尺寸的缩放来说,效率没有reSize高。
resize就是纯粹的根据比例改变长宽。

pyrDown(src, dst, dstsize);中的
dstsize参数,并不是输出图片的尺寸,因为每调用一次,只能缩小2倍,需要缩小4倍则需要被调用2次。因此这里的dstsize大致理解为输出图片的容器大小。
在运算速度上,reSize要比pyr快。

角点检测

goodFeaturesToTrack(image, corners, maxCorners, qualityLevel, minDistance)
image :必须为8bit或者浮点32bit单通道矩阵
corners:输出角点集合
maxCorners:最大角点数
qualityLevel:角点可接待最小特征 范围0.01-1,效果区别不大。

//转换为单通道            Imgproc.cvtColor(drawing,drawing,COLOR_RGB2GRAY);
            drawing.convertTo(drawing,CvType.CV_8UC1);
            Imgproc.goodFeaturesToTrack(drawing,corners,4,0.1,30);
            MatOfPoint2f point2f=new MatOfPoint2f();
            corners.convertTo(point2f,CvType.CV_32FC2);
            Point[] allpoint=point2f.toArray();
            for (Point point:allpoint){
                Imgproc.circle(drawing,point,50,new Scalar(255,0,255));
            }

线段检测

    public static final Mat lineSegmentDetector(Mat srcmat) {
        Mat line = new Mat();
        LineSegmentDetector lsd = new Imgproc().createLineSegmentDetector();
        lsd.detect(srcmat, line);
        lsd.drawSegments(srcmat, line);
       return srcmat;
    }

质心

  Moments moments = Imgproc.moments(drawing);
        Point centerpoint = new Point(moments.get_m10() / moments.get_m00(), moments.get_m01() / moments.get_m00());

根据2点计算所在直线参数

private  static double[] getLineParams(Point linepoint1, Point linepoint2){
        // 两点式公式为(y - y1)/(x - x1) = (y2 - y1)/ (x2 - x1)
        // 化简为一般式为(y2 - y1)x + (x1 - x2)y + (x2y1 - x1y2) = 0
        // A = y2 - y1
        // B = x1 - x2
        // C = x2y1 - x1y2
        double a = linepoint2.y - linepoint1.y;
        double b = linepoint1.x - linepoint2.x;
        double c = linepoint2.x * linepoint1.y - linepoint1.x * linepoint2.y;
        double[] abc=new double[]{a,b,c};
        return abc;
    }
查看评论

Android平台上基于OpenCV的道路循迹

最近实现了利用OpenCV在Android平台上通过摄像头拍摄道路图像提取道路线,反馈出道路信息和摄像头当前相对道路的信息可用于小车循迹,四旋翼飞行器循迹等。...
  • ls5222325
  • ls5222325
  • 2015-06-10 14:44:50
  • 3132

【OpenCV】四通道图像复制到三通道图像上

while (true){ cap >> frame; imshow("frame", frame); switch (frame.type()) { case CV_8UC1: ...
  • Taily_Duan
  • Taily_Duan
  • 2017-02-17 14:19:50
  • 2779

使用OPENCV中的Sobel函数找函数边缘并显示

{ Mat mat_blur;    mat_blur = in.clone();    GaussianBlur(in, mat_blur, Size(blurSize, blurSize), 0,...
  • yangpan011
  • yangpan011
  • 2017-05-10 19:06:29
  • 325

OpenCV学习笔记(二十一)---三通道和四通道之间的区别

三通道和四通道之间的区别: void mixChannels(const vector& src, vector& dst, const int* fromTo, int npairs) ...
  • spw_1201
  • spw_1201
  • 2017-03-09 13:49:42
  • 1851

opencv IplImage* 3通道转4通道

opencv  IplImage*的格式   3通道转4通道 unsigned char *dataBackGround = NULL; // 背景画像へのポインタ dataBackGroun...
  • u010667082
  • u010667082
  • 2016-03-08 14:31:35
  • 1876

opencv2—(4)遍历图像和邻域操作

在图像处理中,对当前位置像素的相邻像素计算新的像素值是很常见的操作,当邻域包括图像的前几行和下几行时,你就需要同时扫描图像的若干行 本篇介绍的这个例子是对图像进行锐化,它是基于拉普拉斯算子的。将一幅...
  • sinat_27614619
  • sinat_27614619
  • 2017-01-11 16:30:51
  • 612

opencv 4通道转换成三通道

opencv 从Mat的4通道转换成IplImage的三通道 cv::Mat img0=QImage2cvMat(showImage); IplImage* pSrc =NULL; Ip...
  • sinat_33621733
  • sinat_33621733
  • 2017-11-07 11:28:08
  • 740

深入opencv android 应用开发

  • 2018年01月30日 20:56
  • 23.81MB
  • 下载

opencv4android常用变换(终)

opencv4android常用变换(三)这是opencv4android的第三篇,从这里开始就简单的写,要不我没有时间去学别的了!大家加油。Laplace 算子检测边缘的一种算法,是一个二阶导数就是...
  • hbl_for_android
  • hbl_for_android
  • 2016-08-01 10:56:14
  • 1526

Android:GridView+AbsoluteLayout作一个四宫格

布局: 1: xml version="1.0" encoding="utf-8"?> 2: AbsoluteLayout xmlns:android="http://sche...
  • wufenglong
  • wufenglong
  • 2010-05-22 23:48:00
  • 5820
    个人资料
    专栏达人 持之以恒
    等级:
    访问量: 38万+
    积分: 6692
    排名: 4412
    博客专栏
    最新评论