网站换关键词,山西网站备案,河南智能seo快速排名软件,网站提示域名重定向怎么做#x1f389;#x1f389;#x1f389; 欢迎各位来到小白 p i a o 的学习空间#xff01; \color{red}{欢迎各位来到小白piao的学习空间#xff01;} 欢迎各位来到小白piao的学习空间#xff01;#x1f389;#x1f389;#x1f389; #x1f496; C\Python所有的入… 欢迎各位来到小白 p i a o 的学习空间 \color{red}{欢迎各位来到小白piao的学习空间} 欢迎各位来到小白piao的学习空间 C\Python所有的入门技术皆在 我的主页 \color{#0cc123}{我的主页} 我的主页我的主页 目录 一、从创建一个图像开始 \color{blue}{一、从创建一个图像开始} 一、从创建一个图像开始 1.1 直接通过 M a t 类完成创建 \color{green}{1.1 直接通过Mat类完成创建} 1.1直接通过Mat类完成创建1.1.1 利用构造函数Mat中的一些形式完成快速创建a 实际案例--创建一个黑色(或者白色、纯色)背景图像 1.1.3 利用zeros和ones完成图像的创建aMat::zeros()实例--创建图像bMat::ones()实例--创建图像 二、画线、长方形、圆形、多边形 \color{blue}{二、画线、长方形、圆形、多边形} 二、画线、长方形、圆形、多边形 2.1 画线 \color{green}{2.1 画线} 2.1画线2.1.1 line()函数原型及解释2.1.2 代码实例 2.2 画长方形 \color{green}{2.2 画长方形} 2.2画长方形2.2.1 rectangle()原型及解释2.2.2 代码实例 2.3 画圆形 \color{green}{2.3 画圆形} 2.3画圆形2.3.1 circle()原型及解释2.3.2 代码实例 2.3 画多边形 \color{green}{2.3 画多边形} 2.3画多边形2.3.1 polylines()原型及解释2.3.2 代码实例 三、在图像上显示文本内容 \color{blue}{三、在图像上显示文本内容} 三、在图像上显示文本内容 3.1 基本方法 p u t T e x t ( ) 介绍 \color{green}{3.1 基本方法putText()介绍} 3.1基本方法putText()介绍 3.2 实际案例 \color{green}{3.2 实际案例} 3.2实际案例 四、总结 \color{red}{四、总结} 四、总结 一、从创建一个图像开始 \color{blue}{一、从创建一个图像开始} 一、从创建一个图像开始 1.1 直接通过 M a t 类完成创建 \color{green}{1.1 直接通过Mat类完成创建} 1.1直接通过Mat类完成创建
1.1.1 利用构造函数Mat中的一些形式完成快速创建 这里边内容真不少 当然其中不是每个内容都需要大家去掌握这里为大家整理和介绍一种非常常用的方法如果这个可以掌握剩下都是可以无师自通的 a 实际案例–创建一个黑色(或者白色、纯色)背景图像 案例一 #include opencv2/opencv.hpp
using namespace cv;int main()
{Mat img(Size(512, 512), CV_8UC3, Scalar(0, 0, 0));return 0;
}这里使用的是这个函数原型 这样就可以完成一个任意颜色任意大小图片且通道数任意的图像非常方便好用 稍微解释一下 Size对象用于描述图像的大小可以理解为是长宽。type就是图像类型咯8U的意思就是8bit的ucharusigned int8U且通道数为3 C3.Scalar:也是一种数据结构这里表示图像颜色BGR模式中利用三个数字分别描述三种通道蓝绿红的值三个0即表示三个通道颜色强度最小即黑色。 案例二 #include opencv2/opencv.hpp
int main()
{int width 640; // 图像宽度int height 480; // 图像高度cv::Mat image1(height, width, CV_8UC3, cv::Scalar(0, 0, 0));return 0;
}这里使用的是这个函数原型 同样这也可以完成一个黑色图像的创建解释一下 rows 行数即图像的高cols列数即图像的宽 1.1.3 利用zeros和ones完成图像的创建
aMat::zeros()实例–创建图像 案例三 #include opencv2/opencv.hpp
int main()
{int width 640; // 图像宽度int height 480; // 图像高度cv::Mat image2 cv::Mat::zeros(height, width, CV_8UC3);return 0;
}大家应该留意到了这个方法并不是利用Mat的构造函数完成图像的创建的而这也是一种非常常用的方法 这里用到的是这个函数原型 这里做一个解释大家一定注意往下看哈 首先这个方法为什么叫zeros 因为创建的Mat对象中所有通道的值都是0即一个纯0矩阵。.参数解释 rows和cols行和列数即高和宽type图像的类型这里给大家把所有常用的图像类型整理出来放在下边 CV_8UC18位无符号单通道图像 CV_8UC28位无符号双通道图像 CV_8UC38位无符号三通道图像 CV_8UC48位无符号四通道图像 CV_16UC116位无符号单通道图像 CV_16UC216位无符号双通道图像 CV_16UC316位无符号三通道图像 CV_16UC416位无符号四通道图像 CV_32FC132位浮点单通道图像 CV_32FC232位浮点双通道图像 CV_32FC332位浮点三通道图像 CV_32FC432位浮点四通道图像 它也有其他的使用方法但是大同小异 bMat::ones()实例–创建图像 这里的内容其实完全没有必要照抄一份zeros的代码因为其和zeros的使用上只有名称不同而已其他完全一样相同到所有的函数原型都一模一样只是换个名字所以会用zeros就一定会用ones 我们来聊一聊差异 Mat A Mat::ones(100, 100, CV_8U) * 3; // 创建一个全是3的100*100的单通道图像
// 这里一定注意“ * 3 ”的位置是不是挺有趣了 二、画线、长方形、圆形、多边形 \color{blue}{二、画线、长方形、圆形、多边形} 二、画线、长方形、圆形、多边形 2.1 画线 \color{green}{2.1 画线} 2.1画线
2.1.1 line()函数原型及解释 函数原型 void cv::line ( InputOutputArray img,Point pt1,Point pt2,const Scalar color,int thickness 1,int lineType LINE_8,int shift 0 )
Python:cv.line( img, pt1, pt2, color[, thickness[, lineType[, shift]]] ) - img解释一下 img画线的图像即画在哪个图像上pt1线的起始点pt2线的重点color暂时理解为颜色即可后续内容会为大家持续更新thickness线宽即线的粗细lineType线型 shift点坐标中的小数位数。如果不指定则为整数。 2.1.2 代码实例 实际案例 #include opencv2/opencv.hpp
int main()
{// 白色图像cv::Mat img(Size(512, 512), CV_8UC3, Scalar(255, 255, 255));// 画一条蓝色的线在img上。 cv::line(img, cv::Point(0, 0), cv::Point(100, 100), cv::Scalar(255, 0, 0), 5);return 0;
}这些都是简单案例文章最后带大家来完成一个综合案例 2.2 画长方形 \color{green}{2.2 画长方形} 2.2画长方形
2.2.1 rectangle()原型及解释 函数原型一 void cv::rectangle ( InputOutputArray img,Point pt1,Point pt2,const Scalar color,int thickness 1,int lineType LINE_8,int shift 0 )
Python:cv.rectangle( img, pt1, pt2, color[, thickness[, lineType[, shift]]] ) - imgcv.rectangle( img, rec, color[, thickness[, lineType[, shift]]] ) - img解释一下 img画线的图像即画在哪个图像上pt1左上顶点的位置pt2右下顶点的位置通过左上和右下顶点就可以得出长方形的宽高color暂时理解为颜色即可后续内容会为大家持续更新thickness线宽即线的粗细如果为负数即向内填充实心色长方形lineType线型 shift点坐标中的小数位数。如果不指定则为整数。 函数原型二 void cv::rectangle ( InputOutputArray img,Rect rec,const Scalar color,int thickness 1,int lineType LINE_8,int shift 0 )
Python:cv.rectangle( img, pt1, pt2, color[, thickness[, lineType[, shift]]] ) - imgcv.rectangle( img, rec, color[, thickness[, lineType[, shift]]] ) - img解释一下 rec :这是一个Rect对象该对象可以通过 templatetypename _Tp
Rect_ (_Tp _x, _Tp _y, _Tp _width, _Tp _height) 完成创建左上顶点坐标(x,y),以及宽高width和height而这里的_Tp其实就是模板指定的类型可以是int、float、double等。同样基于这个模板产生了三个类Rect2i、Rect2d、Rect2f而其中Rect2i就是通过typedef规定的咱们常见的Rect类。 2.2.2 代码实例 实际案例 #include opencv2/opencv.hpp
int main()
{// 白色图像cv::Mat img(Size(512, 512), CV_8UC3, Scalar(255, 255, 255));// 画一个绿色的线宽为3的正方形在img上。 cv::rectangle(img, cv::Point(0, 0), cv::Point(150, 150), cv::Scalar(0, 255, 0), 3);return 0;
}2.3 画圆形 \color{green}{2.3 画圆形} 2.3画圆形
2.3.1 circle()原型及解释 函数原型一 void cv::circle ( InputOutputArray img,Point center,int radius,const Scalar color,int thickness 1,int lineType LINE_8,int shift 0 )
Python:cv.circle( img, center, radius, color[, thickness[, lineType[, shift]]] ) - img解释一下 img画线的图像即画在哪个图像上center圆心的位置radius圆的半径color暂时理解为颜色即可后续内容会为大家持续更新thickness线宽即线的粗细如果为负数即向内填充实心色lineType线型 shift点坐标中的小数位数。如果不指定则为整数。 2.3.2 代码实例 #include opencv2/opencv.hpp
int main()
{// 白色图像cv::Mat img(Size(512, 512), CV_8UC3, Scalar(255, 255, 255));// 画一个红色半径为100的实心圆在img上。 cv::circle(img, cv::Point(200, 200), 100, cv::Scalar(0, 0, 255), -1);return 0;
}2.3 画多边形 \color{green}{2.3 画多边形} 2.3画多边形
2.3.1 polylines()原型及解释 函数原型一 void cv::polylines ( InputOutputArray img,InputArrayOfArrays pts,bool isClosed,const Scalar color,int thickness 1,int lineType LINE_8,int shift 0 )
Python:cv.polylines( img, pts, isClosed, color[, thickness[, lineType[, shift]]] ) - img解释一下 img:画在哪个图像上的源图像pts:多边形各个顶点坐标构成一个 std::vectorcv::Point 对象isClosed:是否需要闭合多边形color: 多边形的颜色thickness线宽即线的粗细如果为负数即向内填充实心色lineType线型 shift点坐标中的小数位数。如果不指定则为整数。 2.3.2 代码实例 #include opencv2/opencv.hpp
int main()
{// 白色图像cv::Mat img(Size(512, 512), CV_8UC3, Scalar(255, 255, 255));// 画一个深绿色和深红色混合色闭合的多边形// 多边形有四个点cv::Point(250, 250), cv::Point(250, 300), cv::Point(300, 320), cv::Point(320, 270)。// 线宽为3 std::vectorcv::Point pts {cv::Point(250, 250), cv::Point(250, 300), cv::Point(300, 320), cv::Point(320, 270)};cv::polylines(img, pts, true, cv::Scalar(0, 255, 255), 3);return 0;
}三、在图像上显示文本内容 \color{blue}{三、在图像上显示文本内容} 三、在图像上显示文本内容 3.1 基本方法 p u t T e x t ( ) 介绍 \color{green}{3.1 基本方法putText()介绍} 3.1基本方法putText()介绍 函数原型 void cv::putText ( InputOutputArray img,const String text,Point org,int fontFace,double fontScale,Scalar color,int thickness 1,int lineType LINE_8,bool bottomLeftOrigin false )
Python:cv.putText( img, text, org, fontFace, fontScale, color[, thickness[, lineType[, bottomLeftOrigin]]] ) - img解释一下 img显示文本的原图像text文本内容是一个字符串org文本内容的左下底角在图像img上的位置fontFace字体有如下几种字体可选 fontScale字体缩放因子即OpenCV的字体有一个默认大小你可以基于这个大小设置字体的大小是一个double类型的值使用方法默认字体大小*fontScale。color:字体颜色thickness线宽即字体的粗细lineType线型 bottomLeftOrigin :如果为true则图像数据原点位于左下角。否则它在左上角。即文字默认的原点坐标是图像的左上角还是左下角。 3.2 实际案例 \color{green}{3.2 实际案例} 3.2实际案例 代码实例 #include opencv2/opencv.hpp
int main()
{// 黑色图像cv::Mat img(Size(512, 512), CV_8UC3, Scalar(0, 0, 0));// 距离图像左上角位置(50,450)位置内容为“OpenCV Tutorial”的白色文字cv::putText(img, OpenCV Tutorial, cv::Point(50, 450), cv::FONT_HERSHEY_COMPLEX_SMALL, 1, cv::Scalar(255, 255, 255), 2,false);// 显示图像cv::imshow(OpenCV Tutorial, img);cv::waitKey(0);return 0;
}四、总结 \color{red}{四、总结} 四、总结 这章节内容没啥好说的都是基础的内容而且是一些未来咱们内容中会用到的基本技能大家都需要知晓且掌握哈有空的小伙伴可以先用这个内容练习一下基本功熟悉记忆一下函数的参数代表什么意思因为大家也发现了一个函数的参数是真的多多用用就记住了 持续更新期待关注 \color{blue}{持续更新期待关注} 持续更新期待关注 我的资源 \color{purple}{我的资源} 我的资源我的资源
IT技术各档次模板各类项目企业、毕设数据库安装包Mysql8.0技能资料电子书、软考等 前文链接【C的OpenCV】第十四课-OpenCV基础强化三Mat元素的访问之data和step属性