- 博客(20)
- 收藏
- 关注
原创 opencv----马赛克
马赛克效果就是将图像分成大小一致的图像块,每一个图像块都是一个正方形,并且在这个正方形中所有的像素值都相等,然后将这个正方形看做一个模板窗口,模板中对应的所有图像像素值都等于该模板左上角第一个像素的像素值,正方形模板的大小则决定了马赛克块的大小,即图像马赛克化的程度。return "({}, {}, {})".format(cur_closer[0], cur_closer[1], cur_closer[2]) # 返回hsv颜色。close_img_name) + '.png' # 图片的地址。
2024-07-13 12:45:25
569
原创 OpenCV学习 day9 链接与部署
编译器获取预处理程序的输出,并将其编译成机器代码。在构建过程中可以保存并重用该机器代码,因为只要不改变源文件,那么生成的机器代码就不会改变。该阶段是将源代码送入实际的编译器之前,将源代码转变为最终状态的过程。库混合,这就意味着不能借用插件功能,无法通过从头开始构建所有内容来扩展应用程序。目标是链接编译器产生的对象以产生可执行的文件或库。"模式下构建应用程序,然后在文件中找到可执行文件(一般假设叫做"构建应用程序时,需要保证应用程序的可执行文件能够访问。"),将其复制到单独的一个文件夹中(假设为。
2024-07-07 11:30:54
879
原创 OpenCV学习 day8 调试与测试
在项目中如果要在调试中启动程序,可以使用下列方法: 按下F5键、使用“Start Debugging”按钮、主菜单选项卡进入调试模式后还允许以下操作: 在代码中添加、启用、禁用以及查看断点 中断正在运行的程序和进程来查看和检查代码 查看和检查函数的调用堆栈 查看和检查变量 反汇编源代码在代码中设置了断点之后,无论何时程序到达代码中的该行,程序都将中断。此时可以使用代码编辑器下的空间控件来执行下列任务: Cont
2024-07-04 17:18:39
1275
原创 设计模式之 命令模式
将一个请求或者命令(做红烧鱼和锅包肉)封装为一个对象,以便这些请求可以以对象的方式通过参数进行传参(参数化),对象化之后的请求还可以排队执行或者根据需求进行使用。命令模式的核心实现手段,是将成员函数的调用封装成命令对象,也就是对请求进行封装,命令对象将动作和接收者包裹到对象中,并且只暴露出了一个Execute方法以让接受者执行动作。
2024-07-04 16:12:48
439
原创 OpenCV学习 day6 多线程
Qt框架有一个名为QWaitCondition类,可以让线程在满足一些其他条件之后,才继续进行,例如两个线程,一个创造图像,一个修改图像,如果图像未被创造出来,那么即时轮到该线程也无法进行后续步骤。通过利用Qt中可用的两种不同方法来使用QThread类,首先子类化并重写run方法,然后使用所有的Qt对象中可用的moveToThread函数。通常情况下,不同的进程彼此是无关的,而不同的线程共享内存和资源(进程可以通过操作系统提供的手段实现彼此交互)线程是进程的一个子集,也就是一个进程可包含多个线程;
2024-07-02 18:41:14
730
原创 OpenCV学习 day5 特征及其描述符
这一章我们学习OpenCV中一些重要的类和方法,这些内容能够让我们找出图像中被称作“特征(或关键点)”的可区分部分或者对象。如何学习描述符,描述符是对特征的描述。这些描述符在计算机视觉应用程序中用途广泛,包括图像对比、但应性变化检测、已知对象的定位等等。 OpenCV中的所有(至少是那些不太简短的)算法都是作为cv::Algorithm类的子类创建的。 FileStorage:可以实现对XML、YAML以及JSON文件的写入和读取。 FileNodel:是Node类
2024-07-01 20:59:54
606
原创 OpenCV学习 day4 基于OpenCV的图像处理
OpenCV提供了大量的功能来处理不同类型的图像处理任务,如图像滤波、几何变换、绘制、不同颜色空间的处理、图像直方图等等。 本节中所有的函数都是以Mat图像作为输入,并生成具有同样大小和相同通道数的Mat图像。通常滤波算法是从输入图像获取一个像素及其临近的像素,但是图像边缘的像素可能会缺少某个方向的邻近像素,所以作出假设,可能设为0或者与边界像素相等之类,用到cv::BorderTypes枚举指定。 OpenCV中的滤波函数:bilateralFilter:可以用来获取图像的双
2024-07-01 12:29:05
1638
原创 OpenCV学习 day3 图形视图框架
场景(QGraphicsScene类),用于管理对象元素或者图形对象元素(QGraphicsItem类及其子类)的实例。视图(QGrahicsView类),用于可视化和显示QGraphicsScene的内容,还负责将事件传递给QGraphicsScene。这两个类有不同的坐标系统,因此在进行坐标改变时,要分别使用转换位置值的函数。对象元素图形对象元素(QGraphicsItem类及其子类,可以是线、矩形、图像、文本。
2024-06-29 16:16:33
417
原创 OpenCV学习 day2 (Mat和QImage)
也可以使用一个Mat类的一部分,创建另一个Mat类,例如以一个图像的(25,25)为起点创建一个50*50像素的正方形RIO Mat类(RIO 感兴趣区域,Region of Interest)注意QImage类和Mat类的数据格式不一样,QImage类是RGB,而OpenCV的Mat类是BGR,Mat roi(image, Rect(25, 25, 50, 50)) //左上角是 (0,0)<bits>: 8、16有无符号的整数 32有无符号的整数和福电视 64有无符号的浮点数。
2024-06-28 16:19:13
1357
原创 OpenCV学习 day1
OpenCV,开源计算机视觉库,主要关注速度和性能,因此各个模块中包含了数百个算法。这些模块主要分为:主模块和附加模块。主模块是OpenCV社区提供,而附加模块是将第三方库和接口集成到OpenCV构建中所需要的封装器。
2024-06-28 10:27:30
873
原创 QT运行案例代码出现与Makefile有关的问题
为什么不能使用含中文字符的路径呢?因为在某些操作系统或者编译工具中,中文字符在文件系统的表示方式可能与英文字符不同,这可能导致编译工具无法解析正确的编译路径。我以为是某个资源文件缺失,或者是因为直接使用已经构建好的Makefile文件所导致的。然后我删除文件后重新构建,依旧会报错。重新检查一遍源码路径,发现解压的压缩包名字含有中文,于是将其拷贝一份换个名字,就可以运行程序了。
2024-06-12 15:03:16
238
原创 QT6 连接mysql数据库的问题
在qt学习时遇到要使用数据库的情况,连接sqlite没有问题,但是连接mysql数据库有问题。经过多方查找,发现QT6不自带mysql的驱动,需要自己编译,或者下载对应版本的mysql驱动。注意:仅适用于个人情况。
2024-06-10 17:14:10
138
原创 设计模式之观察者模式
这个小游戏中主要用到两个容器,使用list容器管理家族成员,使用map容器管理家族,那么每次收发消息的时候,就遍历list容器,挨个调用函数,创造或者注销家族就在map容器中进行,每创建一个家族,就会对应创建家族list,便于管理。观察者模式也被称作“发布-订阅”模式,只有提前订阅的人(在同一个list中)才能接收到发布者发布的消息。整个过程即为,发布者发布消息,通知器收到消息开始找订阅者,然后挨个给订阅者发送消息(即调用订阅者的成员函数)。学习案例来源:《C++新经典设计模式》 王建伟编著。
2024-06-02 12:20:04
343
原创 工厂模式再探
前文学习工厂模式后,发现无论哪种方式,当从外部指令进行创建某一种怪物时,总会使用if/else进行判断,不论是在类里,还是在主函数中。如果有100种怪物,那么就要写100种判断,并且在新增怪物种类的时候,也会去添加if/else的分支判断。使用map容器,就可以减少if/else的判断语句,将判断交给容器去做,只要在容器里匹配到对应的怪兽类型type,就能生成相应的怪兽。直接代码。
2024-05-16 11:46:43
208
原创 工厂模式学习小结
如果只是增加不同地区的这三类怪物,那么使用抽象工厂方法很合适,但是,如果想要增加新的怪物,例如龙系,那么就要在Monster类里进行增加,则不符合开闭原则。因此要避免在产品等级结构不稳定的情况下使用该模式,在游戏中则是在怪物种类固定的情况下,就可以使用抽象工厂模式。学习案例来源:《C++新经典设计模式》 王建伟编著。
2024-05-15 20:36:45
653
原创 单例模式学习小结
记录一下单例模式的学习小结。创建了获取实例的方法 get_instance(),实现的时候,就是使用该方法->成员内部的函数,那么也就是无论什么时候都是只指向这一个对象。
2024-05-11 09:43:14
324
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人