自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(32)
  • 收藏
  • 关注

原创 vscod django项目--编辑用户信息

【代码】vscod django项目--编辑信息。

2024-09-22 16:17:39 206 1

原创 vscode 配置django

1. **创建基础模板**:首先,你需要创建一个基础模板,通常命名为`base.html`。在这个模板中,你定义通用的结构和可重写的区块。2. **定义区块**:使用`{% block %}`和`{% endblock %}`来定义可以被子模板覆盖的区块。4. **覆盖区块**:子模板可以使用`{% block %}`来覆盖基础模板中定义的区块。3. **子模板继承**:子模板使用`{% extends %}`标签来扩展基础模板。打开VSCode,并在项目文件夹中打开终端。在项目根目录下创建一个。

2024-09-22 15:31:18 775

原创 十六 openCV 教程 构造卷积核及morphology操作

作用是返回一个结构元素(卷积核),具体解析如下:得到一个结构元素(卷积核)。主要用于后续的腐蚀、膨胀、开、闭等运算。因为这些运算都是依赖于卷积核的,不同的卷积核(形状、大小)对图形的腐蚀、膨胀操作效果不一样a设定卷积核的形状、b设定卷积核的大小、c表示描点的位置,一般 c = 1,表示描点位于中心。a取不同的参数会导致卷积核有不同的形状,a参数有三个:①:MORPH_RECT(函数返回矩形卷积核)②:MORPH_CROSS(函数返回十字形卷积核)

2024-08-01 00:45:00 692

原创 十九、openCV教程 putText函数

参数4:,int fontFace,字体类型,FONT_HERSHEY_SIMPLEX ,FONT_HERSHEY_PLAIN ,FONT_HERSHEY_DUPLEX 等等等。参数6:,Scalar color,字体颜色,颜色用Scalar()表示,参数3:, Point org, 第一个字符左下角坐标,参数5:,double fontScale,字体大小,参数8:, int lineType,线型,默认值8.参数7:, int thickness,字体粗细,参数1:, Mat& img,待写字的图片,

2024-08-01 00:30:00 179

原创 二十 open CV教程 边缘检测

边缘检测。

2024-07-31 00:30:00 753

原创 十五 open CV 教程 形态学二值化和腐蚀操作

指一系列处理图像形状特征的图像处理技术。形态学的基本思想是利用一种特殊的结构元(本质上就是卷积核)来测量或提取输入图像中相应的形状或特征,以便进一步进行图像分析和目标识别。”方法基本是对二进制图像进行处理,即黑白图像卷积核决定着图像处理后的效果形态学常用基本操作有:1、膨胀和腐蚀2、 开运算3、闭运算4、顶帽5、 黑帽。

2024-07-31 00:15:00 1609

原创 十三 open CV透视变换 warpPerspective

透视变换在图像还原的上的应用很广泛,他是将成像投影到一个新的视平面。比如两个摄像头在不同的角度对统一物体进行拍照,物体上的同一个点在两张照片上的坐标是不一样的,为了实现两张图片同一个点的对应关系映射,透视变换就实现了此功能。

2024-07-30 07:15:00 565

原创 十七、openCV教程 图像轮廓

hierarchy向量内每一个元素的4个int型变量——hierarchy[i][0] ~hierarchy[i][3],分别表示第 i个轮廓的后一个轮廓、前一个轮廓、父轮廓、内嵌轮廓的索引编号。如果当前轮廓没有对应的后一个 轮廓、前一个轮廓、父轮廓或内嵌轮廓的话,则hierarchy[i][0] ~hierarchy[i][3]的相应位被设置为。图像轮廓是具有相同颜色或灰度的连续点的曲线.轮廓在形状分析和物体的检测和识别中很有用。轮廓的作用:.用于图形分析、物体的识别和检测。

2024-07-30 00:45:00 392

原创 十二、openCV教程 warpaffine仿射函数

warp[wɔːp] 经线,变形 affine [ˈæfaɪn]仿制 根据M矩阵进行变形。

2024-07-28 00:30:00 1982 2

原创 十八、openCV教程 视频处理 videocapture

1、

2024-07-26 12:01:01 885

原创 十一、openCV教程 图像翻转和缩放

flipCode,翻转模式,flipCode==0垂直翻转(沿X轴翻转),flipCode>0水平翻转(沿Y轴翻转),flipCode<0水平垂直翻转(先沿X轴翻转,再沿Y轴翻转,等价于旋转180°)INTER_AREA -使用象素关系重采样,当图像缩小时候,该方法可以避免波纹出现。当图像放大时,类似于 INTER_NN 方法。double fx=0 -在x轴上的缩放比例。double fy=0 -在y轴上的缩放比例。dst,翻转后矩阵,类型与src一致。

2024-07-26 00:30:00 314

原创 九 openCV教程 鼠标事件

鼠标事件的函数原型及参数。

2024-07-25 09:45:00 392

原创 八、openCV教程 像素统计

2 如果所画图像是多通道的,比如说image图像的通道数时n,则使用Mat::at(x, y)时,其x的范围依旧是0到image的height,而y的取值范围则是0到image的width乘以n,因为这个时候是有n个通道,所以每个像素需要占有n列。但是如果在同样的情况下,使用Mat::at(point)来访问的话,则这时候可以不用考虑通道的个数,因为你要赋值给获取Mat::at(point)的值时,都不是一个数字,而是一个对应的n维向量。参数2:double*类型的minVal,返回最小值的指针。

2024-07-24 01:45:00 842

原创 七、open CV 教程 图像色彩空间转化和彩色分割

请注意:该函数输出的dst是一幅二值化之后的图像。cv::cvtColor()用于将图像从一个颜色空间转换到另一个颜色空间的转换(目前常见的颜色空间均支持),并且在转换的过程中能够保证数据的类型不变,即转换后的图像的数据类型和位深与源图像一致。即,如果一幅灰度图像的某个像素的灰度值在指定的高、低阈值范围之内,则在dst图像中令该像素值为255,否则令其为0,这样就生成了一幅二值化的输出图像。copyTo函数的功能其实就是把输入图像完全拷贝到输出图像上,并且将输出图像的大小调整成输入图像的大小。

2024-07-23 09:00:00 690

原创 六、openCV4.9.0教程 矩阵的分离和合并

原因是分离后为单通道,相当于分离通道的同时把其他两个通道填充了相同的数值。from_to数组每一对表示从那个通道到哪个通道,如果没有变化就是 0,0,1,1,2,2,3,3。如果将第二个通道转到第三个通道就是 0,0,1,2,2,1,3,3。mixChannels主要就是把输入的矩阵(或矩阵数组)的某些通道拆分复制给对应的输出矩阵(或矩阵数组)的某些通道中,其中的对应关系就由fromTo参数制定.第三个参数:dst,输出矩阵,和mv[0]拥有一样的尺寸和深度,并且通道的数量是矩阵阵列中的通道的总数。

2024-07-22 09:30:00 505

原创 五、openCV4.9.0教程 图形绘制及像素的逻辑操作

而且指定线条颜色的时候用到的宏CV_RGB(r,g,b)定义为#define CV_RGB( r, g, b ) cvScalar( (b), (g), (r), 0 ),由此可见,实际上起作用的颜色是看cvScalar中的b,g,r顺序,线段颜色就不言而喻了。cv2.bitwise_and()是对二进制数据进行“与”操作,即对图像(灰度图像或彩色图像均可)每个像素值进行二进制“与”操作,1&1=1,1&0=0,0&1=0,0&0=0。当角度为0°,90°,180°,270°等时,矩形变为右上方的矩形。

2024-07-21 09:00:00 905

原创 四、openCV4.9.0教程 addWeighted函数

void myCV:: addWeightedtest()是myCV类的成员函数, static void on_lightness(int b, void* userdata)和 static void on_contractness(int b, void* userdata)都设置为静态方法,不属于myCV类。第六个参数:OutputArray dst,输出的数组,和输入的两个数组拥有相同的尺寸和通道数。alpha 相当于增加图像的对比度,gamma相当于增加图像的亮度。

2024-07-20 17:11:41 300

原创 三、openCV4.9.0教程 createTrackbar函数使用4个注意点

createTrackbar()函数的函数原型为:trackbarname:这个参数用来给这个滚动条取一个名字;winname:这个参数用来指定你要吧这个滚动条用到那个窗口上;value:这个参数用来设置滑块初始值位置,同时记录滑块以后的位置;count:这个参数用来指定滚动条可以滚动的最大值;onChange:这个参数可以理解为一个函数类型的变量(当然这样说感觉有点怪),用来接收回调函数函数名的,默认值为0;

2024-07-19 16:48:17 431

原创 二、openCV4.9.0教程 获取像素方法

不能使用 Mat_::iterator it。获取三通道像素:Vec3b bgr = image.at(row, col);获取单通道像素:int pv = image.at(row, col);从个人执行的时间分析,迭代器效率最低,指针效率最高,因为它少了Vec3b转换。

2024-07-19 15:57:19 198

原创 一、openCV4.9.0教程 配置方法及基本操作

2、视图 ->其他窗口->属性管理器 属性管理器->debug64(32)->右键->属性->包含目录 opencv4.1--opencv--build-include opencv opencv2。4、属性管理器->debug64(32)->右键->属性->链接器--输入---附加依赖项 添加 opencv_world490d.lib (3.0版 opencv_world310d.lib )3、属性管理器->debug64(32)->右键->属性->库目录。

2024-07-18 05:22:10 720

原创 七、c++笔记 STL容器应用实例

1、要求:10名雇员,随意分配到三个不同的部门,按照部门打印员工信息。3、用到 string、vector、map 等。2、使用 multimap类分类处理。

2024-07-10 09:00:00 78

原创 八、c++笔记 函数对象

函数原型:set_intersection(iterator beg1,iterator end1, iterator beg2,iterator end2,iterator dest);函数原型:set_union(iterator beg1,iterator end1,iterator beg2,iterator end2,iterator dest);template bool less_equal //小于等于。

2024-07-07 06:34:43 843

原创 七、c++笔记 map容器

map中所有元素都是pair,pair中第一个元素为key(键值)]起到索引作用,第二个元素为value(实值), 所有元素都会根据元素的键值自动排序。1、find(key)返回迭代器,it->first返回key it->second 返回value。第四种可以作为快速的访问方式,根据key可以快速找到value value=mp[key]2、可以用mp[key]返回value,不存在的会返回0。1、四种插入方式,建议使用第二种,不建议使用第四种。3、统计key的个数,对于map容器,最多返回1。

2024-07-05 16:02:07 424

原创 六、c++笔记 list 链表

List有一个重要的性质,插入操作和删除操作都不会造成原有list迭代器的失效,这在vector是不成立的。但是list、forward_list、map、set的迭代器仅支持++iter、–iter这些操作。但是list、forward_list、map、set的迭代器仅支持++iter、–iter这些操作。由于链表的存储方式并不是连续的内存空间,因此链表list中的迭代器只支持前移和后移,属于双向迭代器。要求容器元素存储在连续空间内;即vector、string、deque的迭代器是有加减法的;

2024-07-05 09:00:00 1462

原创 五、c++笔记 set/ multiset容器

1、加入仿函数类 重写operator函数public:bool operator()( int v1, int v2) const { //vs中必须加const2、set容器的类型中添加自定义的仿函数类。在整个声明set容器,使用set容器的过程中都要一样添加这个仿函数类。it!= lp.end();it++)public:bool operator()( int v1, int v2) const { //vs中必须加const。

2024-07-05 06:33:45 883

原创 四、c++笔记 栈stack

stack 后进先出,不能从栈底进行访问,没有迭代器,只能查询栈顶的值。6、emplace 利用参数构造容器中的对象而不是拷贝。2、拷贝构造stack pp(pa);3、赋值构造stack p=pp;1、默认构造 stack pa;2、pop 出栈。5、top 栈顶元素的值。7、swap 交换容器的数据。3、size 栈的大小。4、empty栈是否为空。

2024-07-04 09:03:37 169

原创 三、c++笔记 双端队列deque

deque内部有中控器维护每段缓冲区中的内容,缓冲区中存放真实数据,中控器维护的是每个缓冲区的地址,使得使用deque时像一片连续的内存空间。3、用resize()函数增大和缩小大小,可以指定增大后的值。vector对于头部的插入删除效率低,数据量越大,效率越低。deque相对而言,对头部的插入删除速度回比vector快。2、用size()函数确定deque的大小。删除多个 erase(起始位,结束位)insert(位置,起始位,结束位)2、sort(对象起始位置,对象的。insert(位置,个数,元素)

2024-07-04 08:29:02 339

原创 二、c++笔记 vector容器

vector并不是在原空间之后续接新空间,而是找更大的内存空间,然后将原数据拷贝新空间,释放原空间,相当于动态数组。对于vector对象 v可以有以下操作1、尾部插入v.push_back 和尾部删除v.pop_back2、升序迭代器v.begin() --v.end() 降序迭代器 v.rbegin()--v.rend();3、插入v.insert()

2024-07-03 16:23:14 411

原创 一、C++笔记 string容器类

string和char*区别:string是一个类,类内部封装了char*,管理这个字符串,是一个char*型的容器。string类内部封装了很多成员方法例如:查找find,拷贝copy,删除delete 替换replace,插入insertstring管理char*所分配的内存,不用担心复制越界和取值越界等,由类内部进行负责char*是一个指针.构造函数原型:string();//创建一个空的字符串例如: string str;

2024-07-03 07:47:35 544

原创 栈的场景使用

栈 使用场景

2024-06-22 09:00:00 206

原创 c语音实现单链表初始化的四种方式

1、对于上面的简单结构,用函数赋值需要传递引用,需要用到指针的指针。对指针使用不是很清楚的童鞋很是头痛。2、为避免使用指针的指针,可以利用函数返回的方式给指针赋值。这也是最简单,最易理解的方式。3、变相使用指针的指针。myLLink是myLink结构类型的指针。

2024-06-21 08:00:00 254

原创 单链表的使用场景

在数据库索引中,链表可以辅助管理自由空间或作为B树等数据结构的一部分。4. 实现复杂数据结构:单链表是构建更复杂数据结构如双向链表、循环链表、链式哈希表等的基础,这些数据结构进一步扩展了链表的应用范围,比如在图算法中的应用。6. 实现算法:链表是许多算法实现的基础,比如链表排序(如归并排序、链表的插入排序)和链表的逆序等,这些算法直接利用了链表节点间灵活的链接特性。7. 高效插入和删除:相比于数组,单链表在插入和删除操作上更为高效,因为这些操作只需要改变相邻节点之间的指针,而不需要移动大量数据。

2024-06-20 16:40:09 323

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除