首页 > 编程语言 >c++ opencv直线检测

c++ opencv直线检测

时间:2024-01-12 22:56:07浏览次数:37  
标签:src Mat 直线 lines c++ opencv edges gray CV

 

#include <opencv2/opencv.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>

using namespace cv;

int main(int argc, char** argv)
{
    // 读取图像
    Mat src = imread(argv[1], CV_LOAD_IMAGE_COLOR);
    if(!src.data) {
        printf("Could not open or find the image\n");
        return -1;
    }

    // 转为灰度图
    Mat gray;
    cvtColor(src, gray, CV_BGR2GRAY);

    // 使用Canny边缘检测
    Mat edges;
    Canny(gray, edges, 50, 200, 3);

    // 使用Hough变换检测直线
    vector<Vec4i> lines;
    HoughLinesP(edges, lines, 1, CV_PI/180, 100, 30, 10, 0);

    // 在原图上画出检测到的直线
    for( size_t i = 0; i < lines.size(); i++ )
    {
        Vec4i l = lines[i];
        line( src, Point(l[0], l[1]), Point(l[2], l[3]), Scalar(0,0,255), 3, CV_AA);
    }

    // 显示结果图像
    namedWindow("Source Image", CV_WINDOW_AUTOSIZE);
    namedWindow("Detected Lines", CV_WINDOW_AUTOSIZE);
    imshow("Source Image", src);
    imshow("Detected Lines", edges);

    waitKey();
    return 0;
}

 

 

##

标签:src,Mat,直线,lines,c++,opencv,edges,gray,CV
From: https://www.cnblogs.com/herd/p/17961739

相关文章

  • 【C++】OpenCV4-线条、矩形、圆形、椭圆等图形的绘制与填充、RNG随机函数的使用
    图形的绘制与填充://图形的绘制与填充Matcanvas=Mat::zeros(Size(512,512),CV_8UC3);namedWindow("canvas",WINDOW_AUTOSIZE);//相关绘制API演示//绘制直线line(canvas,Point(10,10),Point(400,400),Scalar(255,0,0),1,LINE_8);//绘制矩形Rectrect(150,1......
  • 刷题笔记——队列(C++)
    1696.跳跃游戏VI-力扣(LeetCode)给你一个下标从 0 开始的整数数组 nums 和一个整数 k 。一开始你在下标 0 处。每一步,你最多可以往前跳 k 步,但你不能跳出数组的边界。也就是说,你可以从下标 i 跳到 [i+1,min(n-1,i+k)] 包含 两个端点的任意位置。你的目标是......
  • C/C++程序的内存开辟——《初学C语言第55天》
    //————C/C++程序的内存开辟C++程序内存分配的几个区域://intt=2;//staticintr=1;//voidtest()//{//  statice=1;//  intn=1;//  intarr[10]={1,2,3,4};//  charg[]="helloworld";//  char*p="abcd";//  int*a=(int*)malloc......
  • C++采集亚马逊amazon产品数据教程
    最近亚马逊电商非常火爆,今天我将用C++语言写一个亚马逊商品数据的爬虫程序,只要是用来收集一些产品相关信息。例如产品自身特性以及产品所对应的销量,为了后期布局亚马逊做一些参考,提供数据支持,同时另外我也会用C语言同样写一篇相关的爬虫教程,方便大家借鉴。首先,这是一个非常复杂的项......
  • C++模板例子
    title:"C++模板例子"date:2023-11-02T01:05:25+08:00tags:["C++"]categories:[]draft:false#include<vector>#include<type_traits>usingnamespacestd;classAA{};classBB{};classTest{public:template<cl......
  • C++中 统计程序执行耗时
    C++程序有时需要统计一段代码的执行消耗时间,可以通过类chrono库来进行计算。该库中常常使用两个类来进行计算时间:std::chrono::steady_clock:表示稳定的时钟std::chrono::system_clock:表示当前系统时钟代码如下#include<chrono>usingnamespacestd::chrono;doubleG......
  • 【C++/Qt】QLCDNumber-电子时钟实战
    头文件:#ifndefDIGITALCLOCK_H#defineDIGITALCLOCK_H#include<QLCDNumber>classdigitalClock:publicQLCDNumber{Q_OBJECTpublic:digitalClock(QWidget*parent=0);protected:voidmousePressEvent(QMouseEvent*event);//鼠标点击事件void......
  • 【C/C++】知识点笔记
    1-联合体内嵌结构体初始化赋值union{struct{inti;floatf;char*p;};into;}obj3={1,2.2,"sk",4,9};printf("structinlayunion:%d,%f,%s,%d\n",obj3.i,obj3.f,obj3.p,obj3.o);输出:structin......
  • C++ 拷贝构造函数
    拷贝构造函数是一种特殊的构造函数,它在创建对象时,是使用同一类中之前创建的对象来初始化新创建的对象。拷贝构造函数通常用于:通过使用另一个同类型的对象来初始化新创建的对象。复制对象把它作为参数传递给函数。复制对象,并从函数返回这个对象。如果在类中没有定义拷......
  • agx orin 使用 sdm 刷机后,vscode 使用 C++ 版本的 opencv, 出现红色的波浪线,但是程序
    原因:vscode没有链接好opencv的头文件先找到opencv头文件的位置:sudofind/-iname"opencv"/usr/include/opencv4/usr/include/opencv4/opencv2解决:ctril+sheft+p:打开:c_cpp_properties.json,写入:"includePath":["${workspaceFo......