QT调用OpenCV绘制直线、矩形、椭圆、圆、不规则曲线、文本
创始人
2024-01-19 00:30:54

开发环境:QT5.14.2+OpenCV4.5

提前准备:准备编译好的OpenCV开发环境(如自行编译的mingw版的opencv库,本地路径D:\opencv\qt_build64),准备一张测试图片(如:d:\test.jpg)。

项目结构:

 

核心代码:

 1、QtFace.pro代码

#opencv在mingw里的标准引用
INCLUDEPATH+=D:\opencv\qt_build64\install\include \             D:\opencv\qt_build64\install\include\opencv2 
LIBS+=D:\opencv\qt_build64\install\x64\mingw\lib\libopencv_*.a
2、mainwindow.h代码

#include
#include
using namespace cv;

3、mainwindow.cpp代码
//绘制直线
void MainWindow::on_actionDrawLine_triggered()
{cv::String fileName = "D:\\test.jpg";cv::Mat src = cv::imread(fileName);if(src.data == NULL){printf("图像读入失败\n");return;}cv::Point pt1= cv::Point_(100,10);cv::Point pt2= cv::Point_(100,200);cv::line(src,pt1,pt2, cv::Scalar(0,255,255),4);imshow("绘制直线",src);waitKey(0);destroyAllWindows();
}
//绘制矩形
void MainWindow::on_actionDrawRect_triggered()
{cv::String fileName = "D:\\test.jpg";cv::Mat src = cv::imread(fileName);if(src.data == NULL){printf("图像读入失败\n");return;}cv::Point pt3= cv::Point_(50,50); // 矩阵左上角顶点cv::Point pt4=cv::Point_(100,100);  // 矩形右下角顶点cv::rectangle(src,pt3,pt4,cv::Scalar(255,0,0),4);

    imshow("绘制矩形",src);
    waitKey(0);
    destroyAllWindows();

}
//绘制椭圆
void MainWindow::on_actionDrawEllipse_triggered()
{

    cv::String fileName = "D:\\test.jpg";
    cv::Mat src = cv::imread(fileName);
    if(src.data == NULL){
        printf("图像读入失败\n");
        return;
    }

    cv::RotatedRect box = cv::RotatedRect(cv::Point_(100,100), cv::Size2f(200.0,200.0),45);
    cv::ellipse(src, box, cv::Scalar(0,255,0), 4);

    imshow("绘制椭圆",src);
    waitKey(0);
    destroyAllWindows();
}
//绘制圆形
void MainWindow::on_actionDrawCircle_triggered()
{

    cv::String fileName = "D:\\test.jpg";
    cv::Mat src = cv::imread(fileName);
    if(src.data == NULL){
        printf("图像读入失败\n");
        return;
    }

    cv::circle(src, cv::Point(300,300), 150,cv::Scalar(255,255,255),4);

    imshow("绘制圆形",src);
    waitKey(0);
    destroyAllWindows();
}
//绘制不规则曲线
void MainWindow::on_actionDrawPolyLines_triggered()
{
    cv::String fileName = "D:\\test.jpg";
    cv::Mat src = cv::imread(fileName);
    if(src.data == NULL){
        printf("图像读入失败\n");
        return;
    }

    std::vector pts;
    pts.push_back(cv::Point(1,0));
    pts.push_back(cv::Point(20,50));
    pts.push_back(cv::Point(100,50));
    pts.push_back(cv::Point(100,300));
    cv::polylines(src,pts,false, cv::Scalar(0,255,0),5);

    imshow("绘制不规则曲线",src);
    waitKey(0);
    destroyAllWindows();
}
//绘制文字
void MainWindow::on_actionDrawText_triggered()
{

    cv::String fileName = "D:\\test.jpg";
    cv::Mat src = cv::imread(fileName);
    if(src.data == NULL){
        printf("图像读入失败\n");
        return;
    }

    cv::putText(src, "测试文字", cv::Point(50,100),cv::FONT_HERSHEY_PLAIN, 2,cv::Scalar(0,0,255),2);

    imshow("绘制文字",src);
    waitKey(0);
    destroyAllWindows();
}

运行截图:

 

相关内容

热门资讯

埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
苁蓉的食用方法 鲜苁蓉的吃法有... 肉苁蓉号称“温而不热,补而不峻,暖而不燥,滑而不泄,故有从容之名。”历来也是传统药食同源的滋补佳品。...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...
应用未安装解决办法 平板应用未... ---IT小技术,每天Get一个小技能!一、前言描述苹果IPad2居然不能安装怎么办?与此IPad不...
脚上的穴位图 脚面经络图对应的... 人体穴位作用图解大全更清晰直观的标注了各个人体穴位的作用,包括头部穴位图、胸部穴位图、背部穴位图、胳...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
埃菲尔铁塔在哪 中国仿建埃菲尔... 2019年4月26日,广西南宁市,街头惊现一座巨型山寨版埃菲尔铁塔,高约20米,白色塔身,造型逼真,...
阳澄湖在哪里哪个省的 阳澄湖是... 点击题目下方苏州生活指南有用 有趣 有态度近期的阳澄湖度很高,3月24日,央视二套《第一时间》直播连...
苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
北京的名胜古迹 北京最著名的景... 北京从元代开始,逐渐走上帝国首都的道路,先是成为大辽朝五大首都之一的南京城,随着金灭辽,金代从海陵王...