/*
绘制形状与文字
*/
#include <iostream>
#include <opencv2/opencv.hpp>
using namespace cv;
using namespace std;
Mat bgImage;
const char* dravdeo_win = "drav shapes and text demo";
void MyLines(); //画直线
void MyRectangle();
void MyEllipse();
void MyPolyon();
void MyCircle();
void RandomLineDemo();
int main(int argc,char**argv)
{
bgImage = imread("E:/Learning_AI/OpenCV_C++/1.jpg");
if (bgImage.empty())
{
cout << "can't open image" << endl;
}
//MyLines(); //绘制直线
MyRectangle(); //绘制正方形框
//MyEllipse(); //绘制椭圆
//MyCircle(); //绘制圆
// MyPolyon(); //填充
// RandomLineDemo(); //随机生成
// putText(bgImage, "HELLO OpenCV", Point(300, 300),
// 4,2.0, Scalar(100, 0, 200), 5, 8); //在图片上写字
namedWindow("output image", WINDOW_NORMAL);
imshow("output image", bgImage);
waitKey(0);
return 0;
}
void MyLines() //绘制直线
{
//Point 打印Point(第一个点在x轴上的位置,第一个点在y轴上的位置)
// 采用两点连线的方式划线
Point p1 = Point(20,30);
Point p2;
p2.x = 300;
p2.y = 300;
Scalar color = Scalar(0, 0, 255); //定义线的颜色
line(bgImage, p1, p2, color, 10, LINE_AA);
//图片名,第一个点,第二个点,线的颜色,线的厚度,线型
}
void MyRectangle()
{ //Rect(方框在x轴的位置,方框在y轴的位置,方框的宽,方框的高)
Rect rect = Rect(100, 500, 100, 500);
Scalar color = Scalar(0, 0, 255); //方框的颜色
rectangle(bgImage, rect, color, 10, LINE_8);
//方形(图像的窗口,方框的)
}
void MyEllipse()
{
Scalar color = Scalar(255, 0, 0);
ellipse(bgImage, Point(bgImage.cols / 2, bgImage.rows / 2), Size(bgImage.cols / 4, bgImage.rows / 8),45, 0, 360, color, 10, LINE_8);
//45倾斜度,360画椭圆的完成度
}
void MyCircle()
{
Scalar color = Scalar(0, 0, 255);
Point center = Point(bgImage.cols / 2, bgImage.rows / 2);
circle(bgImage, center, 150, color, 2, 8);
}
void MyPolyon() //图形填充
{
Point pts[1][5];
pts[0][0] = Point(100, 100);
pts[0][1] = Point(100, 200);
pts[0][2] = Point(200, 200);
pts[0][3] = Point(200, 100);
pts[0][4] = Point(100, 100);
const Point* ppts[] = { pts[0] };
int npt[] = { 5 };
Scalar color = Scalar(255, 12, 255);
fillPoly(bgImage, ppts,npt, 1, color, 8);
}
void RandomLineDemo() //生成随机线条划线
{
//1.创建空白窗口
Mat bg = Mat::zeros(bgImage.size(), bgImage.type());
RNG rng(12345); //随机数生成
Point pt1;
Point pt2;
namedWindow("random line demo", 1);
for (int i = 0; i < 1000; i++)
{
pt1.x = rng.uniform(0, bgImage.cols);
pt2.x = rng.uniform(0, bgImage.cols);
pt1.y = rng.uniform(0, bgImage.rows);
pt2.y = rng.uniform(0, bgImage.rows);
Scalar color = Scalar(rng.uniform(0, 255), rng.uniform(0, 255), rng.uniform(0, 255));
if(waitKey(50)>0) //按空格键退出
{
//保存图片并退出
imwrite("E:/Learning_AI/OpenCV_C++/demo.jpg", bg);
break;
}
line(bg, pt1, pt2, color, 1, 8);
imshow("random line demo", bg);
}
}
相关推荐
c++ 使用opencv来绘制各种图形(持续更新)
C++ 使用opencv来绘制各种图形
opencv基础图形的绘制
本篇文章来讲解使用opencv绘制基础图形。本篇文章就讲解到这里,下篇文章进行opencv摄像头和MP4文件的读取。
【OpenCV】 基础入门(四)基础图像的绘制
其中第一个参数表示目标图片,第二个参数表示椭圆的中心,第三个参数表示椭圆主轴大小的一半,第四个参数表示以度为单位的椭圆旋转角度,第五个参数表示椭圆弧的起始角度,以度为单位,第六个参数表示椭圆弧的结束角度,以度为单位,第七个参数表示椭圆颜色,第八个参数表示椭圆弧轮廓的厚度,第九个参数表示椭圆边界的类型,第十个参数表示中心坐标和轴值中的小数位数。第一个参数表示目标图片,第二个参数表示圆的中心,第三个参数表示圆的半径,第四个参数表示圆的颜色,第五个参数表示圆形轮廓的粗细(如果为正)。轴坐标为 8 的二维点。
opencv--------绘制直线、矩形、圆、椭圆、多边形、填充
opencv--------绘制直线、矩形、圆、椭圆、多边形、填充
OpenCV4(C++)—— 几何图形的绘制
例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例可供参考。
相机标定工具箱:从针孔到鱼眼,多模型多标定板实战指南
相机标定是计算机视觉和机器人感知的基石,其核心原理是通过建立三维世界点与二维图像点之间的映射关系,求解相机的内部参数(内参)和外部姿态(外参)。这一过程的技术价值在于为后续的三维重建、视觉SLAM和精确测量提供了准确的几何约束。在实际工程中,针对不同的镜头(如常规镜头、广角镜头、鱼眼镜头)和场景需求,需要灵活选用合适的相机模型(如针孔模型、Kannala-Brandt鱼眼模型)与标定板(如棋盘格、圆形网格、ArUco板)。本文聚焦于一个集成了多种相机模型与标定板的综合性工具箱,深入解析了其支持的**针孔模型
用C++在OpenCV中绘制直线、正方形、椭圆、圆形、方形填充、随机生成直线
本文是在学习时所作的学习笔记较为简陋,在此与诸君共勉: 在OpenCV中绘制直线、正方形、椭圆、圆形、方形填充、随机生成直线 /* 绘制形状与文字 */ #include <iostream> #include <opencv2/opencv.hpp> using namespace cv; using namespace std; Mat bgImage; const char* dravdeo_win = "drav shapes and text demo"; void My
相机标定工具包:支持多模型与标定板,实现高精度内参与双目立体标定
相机标定是计算机视觉与机器人感知的基础,其核心在于建立像素坐标与三维物理世界之间的精确映射关系。通过数学模型(如针孔模型、鱼眼模型)描述光线通过镜头成像的过程,并利用标定板作为已知尺寸的参照物,可以求解出相机的内参(焦距、主点)和畸变参数。这一过程的技术价值在于为三维重建、视觉SLAM、自动驾驶等应用提供准确的几何感知基础。在实际工程中,标定板的类型(如棋盘格、圆形网格、ChArUco板)和相机的镜头模型(如普通镜头、鱼眼镜头)多种多样,需要针对性的标定方案。本项目提供的相机标定工具包,正是为了解决这一痛点
【OpenCV】 绘制直线、正方形、椭圆、圆形、方形填充、随机生成直线绘制文字
【代码】【OpenCV】 绘制直线、正方形、椭圆、圆形、方形填充、随机生成直线绘制文字。
SAP期初库存导入 (1)
LSMW
TI C2000 , .cmd文件,.TI.ramfunc,将程序分配为在RAM中运行/Flash运行的配置方法和原理讲解,(如28375S ,280049,28335等等芯片)
1 基础知识讲解 1.1 在RAM中运行还是在flash中运行指的是什么? 1.1.1 背景:程序编译完之后生成的.bin文件,.bin文件中包含代码段,代码段中全是汇编指令,而汇编指令中包含多个函数,各函数头的地址不同,如存在A函数和B函数,假设RAM地址区间是0x0000-0x8000,flash的地址区间是0xA000-0xF000,A函数要调用B函数,则A函数调用B函数的那段汇编指令中包含的是B函数头的存储地址,A函数和B函数都在flash中有存储 1.1.2 情况1:B函数是配置为在RAM中运行,
opencv 表识别 工业表智能识别 数字式表盘识别,指针式表盘刻度识别,分为表检测,表盘纠正...
opencv 表识别 工业表智能识别 数字式表盘识别,指针式表盘刻度识别,分为表检测,表盘纠正,刻度分割,刻度拉直识别第一,检测表盘第二,然后,把表盘区域 ROI 出来第三,然后,送到分割模型中把表盘中的指针和时刻,分割出来,然后,把圆形表盘,拉直,拉成一条线,看当时时刻在哪条线,把表盘中的指针和时刻,分割出来,分割出来的是圆形的,分割出来的,只有刻度和指针,但是是圆形的,拉成直线,圆,变换成直线,然后,看当前指针指到哪个刻度。
腾讯云智后台开发实习面试全纪录(已offer)
腾讯云智后台开发实习面经
基于OpenCV的工业表智能识别技术:数字式表盘和指针式表盘的准确定位与刻度识别
opencv 表识别 工业表智能识别 数字式表盘识别,指针式表盘刻度识别,分为表检测,表盘纠正,刻度分割,刻度拉直识别第一,检测表盘第二,然后,把表盘区域 ROI 出来第三,然后,送到分割模型中把表盘中的指针和时刻,分割出来,然后,把圆形表盘,拉直,拉成一条线,看当时时刻在哪条线,把表盘中的指针和时刻,分割出来,分割出来的是圆形的,分割出来的,只有刻度和指针,但是是圆形的,拉成直线,圆,变换成直线,然后,看当前指针指到哪个刻度。
Win10网络图标消失,网络图标变成灰色,打开网络设置闪退等问题解决
介绍 主要解决如下问题 网络图标消失 常用方法配置中出现的网络图标变成灰色没有办法打开 打开网络和Internet闪退 错误提示`网络发现已关闭。网络计算机和设备不可见。请启动网络和共享中心的网络发现。 连不上网,诊断结果为 依赖服务或组无法启动 这个问题大概率通过重装系统不能解决,请大家谨慎测试之后最后选择重装这个路线。 方法1:这一步一定要做(卸载三方软件) 把360安全卫士,软件管家这些东西都卸载掉。 我的问题一开始就是这个软件引起的,可能他检测到我还给台式机配了无线网卡,然后就把有线网络的一些
黑猫带你学UFS协议第13篇:UFS初始化详解(Boot Operation)
本文详细解析了UFS设备的初始化过程,包括部分初始化、加载启动代码(可选)和初始化完成三个阶段。重点介绍了如何通过设备描述符和逻辑单元描述符配置引导特性,以及如何从UFS设备加载启动代码。内容适用于嵌入式硬件和存储领域的开发者。
OpenCV学习笔记
学习视频4h上手C++版Opencv_哔哩哔哩_bilibili。
NOTE: When using the `ipython kernel` entry point, Ctrl-C will not work.解决方案
本文主要介绍了NOTE: When using the `ipython kernel` entry point, Ctrl-C will not work.解决方案,希望能对使用jupyter notebook的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案
OpenCV 实现工业表智能识别:数字式表盘和指针式表盘的刻度识别及纠正
opencv 表识别 工业表智能识别 数字式表盘识别,指针式表盘刻度识别,分为表检测,表盘纠正,刻度分割,刻度拉直识别第一,检测表盘第二,然后,把表盘区域 ROI 出来第三,然后,送到分割模型中把表盘中的指针和时刻,分割出来,然后,把圆形表盘,拉直,拉成一条线,看当时时刻在哪条线,把表盘中的指针和时刻,分割出来,分割出来的是圆形的,分割出来的,只有刻度和指针,但是是圆形的,拉成直线,圆,变换成直线,然后,看当前指针指到哪个刻度。
实验7:机器学习油田产量预测-代码数据-完整代码数据可直接运行-计算机毕设
实验7:机器学习油田产量预测-代码数据-完整代码数据可直接运行-计算机毕设
【Bug已解决】npm install -g @anthropic-ai/claude-code 出现 EACCES: permission denied 解决方案
方案适用场景推荐指数nvm 管理 Node长期开发环境,一次配置永久生效⭐⭐⭐⭐⭐修改 npm 全局目录不想引入 nvm,快速解决⭐⭐⭐⭐修复现有目录权限之前用过 sudo 装包,需要修复⭐⭐⭐Windows 管理员/改目录Windows 平台专用⭐⭐⭐⭐官方原生安装脚本想彻底避开 npm 权限问题⭐⭐⭐⭐报的本质是npm 全局安装目录的属主权限与当前执行用户不匹配,而不是 npm 或 Claude Code 本身有问题。不要用sudo"强行"解决。
工业视觉笔记快捷搜索---目录
工业视觉需要时可抄的代码---持续更新 一(1-28)目录1、批量访问图片,等待键盘1.2 批量访问图像(不用提前批量重命名)--访问文件夹底下所有同类型图像1.2.1 单独只有批量访问的1.3 批量访问图像(也是不用提前批量重命名)--访问文件夹底下所有同类型图像1.4 批量访问图像(也是不用提前批量重命名)--访问文件夹底下所有同类型图像1.5 批量访问图像(不用提前批量重命名)--单张和批量前面路径相同(jiefeng)1.6 批量访问图像(不用提前批量重命名)--单张和批量前面路径相同(bioake
怀旧版电脑GBC模拟器
再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。
51c视觉~CV~合集3
基于深度学习的方法在某些工业产品的表面缺陷识别和分类方面表现出优异的性能, 然而大多数工业产品缺陷样本稀缺, 而且特征差异大, 导致这类需要大量缺陷样本训练的检测方法难以适用. 提出一种基于重构网络的无监督缺陷检测算法, 仅使用容易大量获得的无缺陷样本数据实现对异常缺陷的检测. 提出的算法包括两个阶段: 图像重构网络训练阶段和表面缺陷区域检测阶段. 训练阶段通过一种轻量化结构的全卷积自编码器设计重构网络, 仅使用少量正常样本进行训练, 使得重构网络能够生成无缺陷重构图像, 进一步提出一种结合结构性损失和L1
VB摄像头监控
该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制
OV9734 DATASHEET,完整规格书
OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等
基于YOLOv8关键点检测的工业仪表智能读数实战指南
计算机视觉中的目标检测与关键点检测技术,是机器感知和理解物理世界的基础。目标检测负责定位物体,而关键点检测则能精确识别物体的特定部位,二者结合为复杂视觉任务提供了高效解决方案。在工业自动化领域,这种技术组合展现出巨大价值,能够替代传统人工,实现高效、精准的物理量数字化。指针式圆形仪表广泛存在于能源、制造等行业的监控场景,其读数自动化是智能运维的关键环节。本文以YOLOv8模型为核心,详细阐述了如何利用其混合任务能力,通过仪表盘检测矫正、指针关键点定位、几何计算映射三个核心步骤,构建一个鲁棒的工业视觉读数系统
TMS_WebGMaps_1.9.8.0_Full_Source
TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder
Opencv(C++)笔记--绘制直线、矩形、椭圆、圆、填充多边形、绘制字体和随机产生坐标点
绘制字体,传入的参数依次为:背景图、要绘制的字体内容、文本框左下角坐标、字体、尺寸因子(值越大字体越大)、颜色、线宽和线型;绘制直线,传入的参数依次为:背景图、两个点的坐标、直线的颜色、直线的线宽和直线的线型;填充多边形,传入的参数依次为:背景图、点的坐标、点的个数、线宽、颜色和线型;绘制圆,传入的参数依次为:背景图、中心点、半径、颜色、线宽和线型;绘制矩形,传入的参数依次为:背景图、矩形框、颜色、线宽和线型;6--cv::putText()绘制字体。1--cv::line()绘制直线。
计算机图形学 绘制直线(C++)
数值微分法DDA(Digital Differential Analyzer) 它的基本思想是先对一个方向的坐标取单位步长的变化,然后计算另一方向坐标相应的变化值。 void Draw(CDC *pCD,int x1,int y1,int x2,int y2,COLORREF color) { int dx,dy,n,k; double xinc,yinc,x,y; dx = x2-x1; ...
1275



被折叠的 条评论
为什么被折叠?



