zoukankan      html  css  js  c++  java
  • opencv之常用还是忘,那咋办嘛

    相机标定:https://blog.csdn.net/y2c58s43d69g8h7G_g/article/details/97239418
    畸变参数个数要是镜头太凸的话,就像鱼眼相机和哨兵150视角,就选3
    FocalLength 焦距
    PrincipalPoint 主点
    RadialDistortion 径向畸变
    TangentialDistortion 切向畸变
    转xml代码:https://www.cnblogs.com/xingkongcanghai/p/11862534.html
    writeXML(cameraParams,'cameraParams.xml');

    Ubuntu自启动程序 gnome-session-properties

    Rect tl()左上角点坐标 br()右下角点坐标

    //切割ROI
    Mat ROI = threshold_output(Rect(boundRect[i].tl(), boundRect[i].br()));
    

    逼近多边形:approxPolyDP(Mat(contours[i]), contours_poly[i], 3, true);

    返回外部矩形边界:boundRect[i] = boundingRect(Mat(contours[i]));//参数为输入的二维点集可以是vector或Mat类型

    寻找最小包围矩形:RotatedRect minRect = minAreaRect(Mat(contours[i]));参数为输入的二维点集可以是vector或Mat类型
    Point2f vertex[4];//用于存放最小矩形的四个顶点
    minRect.points(vertex);//返回矩形的四个顶点给vertex
    //绘制最小面积包围矩形
    vectormin_rectangle;
    for (int i = 0; i < 4; i++)
    {
    line(drawing, vertex[i], vertex[(i + 1) % 4], Scalar(255, 0, 0), 1, 8);//非常巧妙的表达式
    min_rectangle.push_back(vertex[i]);//将最小矩形的四个顶点以Point的形式放置在vector容器中
    }

    最小包围圆:minEnclosingCircle(contours[i], center, radius);//寻找最小包围圆
    circle(drawing, center, cvRound(radius), Scalar(0, 255, 0), 1, 8);//绘制最小包围圆,cvRound对半径进行四舍五入

    	//找轮廓重心
    				vector<Moments> mu(contours.size());
    				mu[i] = moments(contours[i], false);
    				double a = mu[i].m10 / mu[i].m00; 
    				double b = mu[i].m01 / mu[i].m00;
    				//cout << i << "******" << "(" << a << "," << b << ")" << endl;
    				Point p = Point(a, b);
    				circle(drawing, p, 1, Scalar(0, 0, 255), 3, 8);//重心
    

    寻找轮廓:
    findContours(threshold_output, contours, RETR_EXTERNAL, CHAIN_APPROX_SIMPLE, Point(0, 0));//RETR_EXTERNAL最外层
    findContours(ROI, contoursROI, hierarchyROI, CV_RETR_TREE, CHAIN_APPROX_SIMPLE);//CV_RETR_TREE,所有
    画轮廓:drawContours(drawingROI, contoursROI, j, Scalar(0, 0, 255), 2);//contoursROI到drawingROI

    Atan2 函数介绍 atan2
    原型:extern float atan2(float y, float x);
    用法:#include <math.h>
    功能:求y/x(弧度表示)的反正切值.

    在 istream 和 ifstream 类中有一个read成员函数,它可以用来读取使用 write 写入的二进制数据。它釆用了两个形参,一个是字节读取后将要存储的缓冲区的地址,另外一个是要读取的字节数:
    read(addressOfBuffer, numberOfBytes)

    输出错误cerr https://www.baidu.com/link?url=677fHjVKdf4C_SZ8IZzf5pFJDmFHr6ZCyn8VqDUta6dZCn3gbQm1E-Fi0UFO0BVAAzMxNsfxIw8JOJma1CrkUD1H5ucJ6fWIMUbkbpuEAbG&wd=&eqid=947da5540009e9ce000000025dfb565d
    基于PNP方法的绝对位姿测量
    https://www.jianshu.com/p/b97406d8833c

    void solvePnP(InputArray objectPoints, InputArray imagePoints, InputArray cameraMatrix, InputArray distCoeffs, OutputArray rvec, OutputArray tvec, bool useExtrinsicGuess=false, int flags = CV_ITERATIVE)
    

    objectPoints - 世界坐标系下的控制点的坐标,vector的数据类型在这里可以使用
    imagePoints - 在图像坐标系下对应的控制点的坐标。vector在这里可以使用
    cameraMatrix - 相机的内参矩阵
    distCoeffs - 相机的畸变系数
    以上两个参数通过相机标定可以得到。相机的内参数的标定参见:http://www.cnblogs.com/star91/p/6012425.html
    rvec - 输出的旋转向量。使坐标点从世界坐标系旋转到相机坐标系
    tvec - 输出的平移向量。使坐标点从世界坐标系平移到相机坐标系
    flags - 默认使用CV_ITERATIV迭代法

    openCV中convertTo(转换)的用法:https://blog.csdn.net/haima1998/article/details/82079042
    cmake -DCMAKE_BUILD_TYPE=Release ..

  • 相关阅读:
    优化IIS7.5支持10万个同时请求的配置方法
    .net core2.0获取host的方法
    mvc项目远程发布到windows server服务器
    使用Visual Studio给SQL生成测试数据
    C# partial 关健字说明
    TortoiseGit保存用户名密码的方法
    Jquery插件开发
    Spring众多jar包的特点,及Spring jar包官网下载方法
    ubutu16.04修改分辨率
    +号变为空格之编码解码
  • 原文地址:https://www.cnblogs.com/xingkongcanghai/p/11746595.html
Copyright © 2011-2022 走看看