10 OpenCV 形态学的应用

文章目录

  • 算子
  • 形态学提取直线示例

算子

adaptiveThreshold 二值化算子

adaptiveThreshold(src, dst=None,maxValue, adaptiveMethod, thresholdType, blockSize, C, )
/*
*src:灰度化的图片
*dst:输出图像,可选
*maxValue:满足条件的像素点需要设置的灰度值
*adaptiveMethod:自适应方法。有2种:ADAPTIVE_THRESH_MEAN_C 或 ADAPTIVE_THRESH_GAUSSIAN_C
*thresholdType:二值化方法,可以设置为THRESH_BINARY或者THRESH_BINARY_INV
*blockSize:分割计算的区域大小,取奇数
* C:常数,每个区域计算出的阈值的基础上在减去这个常数作为这个区域的最终阈值,可以为负数*/

形态学提取直线示例

想法:把获取二值化的图片轮廓,对直线进行开闭运算

#include <opencv2/opencv.hpp>
#include <iostream>using namespace cv;
int main() {Mat src, dst;src = imread("chars.png");if (!src.data) {printf("could not load image...\n");return -1;}char INPUT_WIN[] = "input image";char OUTPUT_WIN[] = "result image";namedWindow(INPUT_WIN);imshow(INPUT_WIN, src);Mat gray_src;cvtColor(src, gray_src, CV_BGR2GRAY);imshow("gray image", gray_src);Mat binImg;adaptiveThreshold(gray_src, binImg, 255, ADAPTIVE_THRESH_MEAN_C, THRESH_BINARY, 15, -2);imshow("binary image", binImg);// 水平结构元素Mat hline = getStructuringElement(MORPH_RECT, Size(src.cols / 16, 1), Point(-1, -1));// 垂直结构元素Mat vline = getStructuringElement(MORPH_RECT, Size(1, src.rows / 16), Point(-1, -1));Mat temp;erode(binImg, temp, hline );dilate(temp, dst, hline );// morphologyEx(binImg, dst, CV_MOP_OPEN, vline);bitwise_not(dst, dst);//blur(dst, dst, Size(3, 3), Point(-1, -1));imshow("Final Result", dst);waitKey(0);return 0;
}

在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/721994.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关于程序员如何选择职业赛道

程序员作为一个独具特色的职业群体&#xff0c;面临着诸多挑战和机遇。在选择职业赛道方面&#xff0c;程序员需要考虑自身兴趣、技能、发展前景等因素&#xff0c;以便找到最适合自己的发展路径。本文将从不同角度探讨程序员如何选择职业赛道。 首先&#xff0c;程序员应该认…

C#中对象的相等性与同一性的判断方法总结

C#对象的相等性与同一性 1. 概述与准备1.1 概述1.2 准备 2. Equals(Object)2.1 功能&#xff1a;2.2 实例&#xff1a;2.3 扩展&#xff1a;2.4 重写此方法 3. Equals(Object, Object)3.1 功能3.2 实例 4. ReferenceEquals(Object, Object)4.1 功能4.2 使用场景&#xff1a;4.3…

人工智能+

上上一个风口是互联网&#xff0c;信息分享。 上一个风口是物联网&#xff0c;实现万物互联。 如今再提人工智能&#xff0c;传感器大数据AI算法&#xff0c;尽量地减少人为干预&#xff0c;替代人工作或实现人无法执行的工作。 弱人工智能 所谓弱人工智能就是仅在单个领域…

Java必须掌握的多态的优势和弊端(含面试大厂题和源码)

Java中的多态是面向对象编程的核心特性之一&#xff0c;它允许一个引用类型变量在运行时绑定到多个不同的类型的对象。多态的使用带来了许多优势&#xff0c;同时也存在一些潜在的弊端。在面试大厂时&#xff0c;理解和能够讨论这些优缺点显示出深入的知识和对技术的全面理解。…

桥梁工程AR增强现实模拟情景实训教学演练

在传统的桥梁工程专业课堂中&#xff0c;理论知识的学习往往占据了大部分时间。然而&#xff0c;对于桥梁工程这样的专业领域&#xff0c;实践操作的重要性不言而喻。而AR技术的出现&#xff0c;恰恰解决了这个问题。 首先&#xff0c;AR技术可以模拟真实的桥梁环境&#xff0c…

数据结构学习(四)高级数据结构

高级数据结构 1. 概念 之所以称它们为高级的数据结构&#xff0c;是因为它们的实现要比那些常用的数据结构要复杂很多&#xff0c;能够让我们在处理复杂问题的过程中&#xff0c; 多拥有一把利器&#xff0c;同时掌握好它们的性质&#xff0c;以及所适应的场合&#xff0c;在…

《剑指offer》76--删除链表中重复的结点[C++]

目录 题目&#xff1a; 思路&#xff1a; 贴代码&#xff1a; 代码输出 题目&#xff1a; 在一个排序的链表中&#xff0c;存在重复的结点&#xff0c;请删除该链表中重复的结点&#xff0c;重复的结点不保留&#xff0c;最后返回链表头指针。 如&#xff1a; 链表1->…

Windows下定时器SetTimer以及KillTimer的用法

前言 在Windows下&#xff0c;定时器通常用于周期性地执行某些任务或在一定延迟后执行特定的操作。Windows提供了一些API函数来操作定时器&#xff0c;其中主要包括 SetTimer、KillTimer 和 SetTimerProc。 什么时候我们需要用到SetTimer函数呢&#xff1f;当你需要每个一段时…

PaddleOCR基于PPOCRv4的垂类场景模型微调——手写文字识别

PaddleOCR手写文字识别 一. 项目背景二. 环境配置三. 数据构造四. 模型微调五. 串联推理六. 注意事项七. 参考文献 光学字符识别&#xff08;Optical Character Recognition, OCR&#xff09;&#xff0c;ORC是指对包含文本资料的图像文件进行分析识别处理&#xff0c;获取文字…

EXTJS实现自定义表格

宽度自适应 width: 100%, 高度自适应 height: 100% 同时设置表格所处页面高度100% html,body,#griddemo{height: 100%;} 自定义显示的文本内容 Ext.onReady(function () {Ext.QuickTips.init()function sexText(val) {if (val 0) {return <span style"color:green…

【牛客】SQL135 每个6/7级用户活跃情况

描述 现有用户信息表user_info&#xff08;uid用户ID&#xff0c;nick_name昵称, achievement成就值, level等级, job职业方向, register_time注册时间&#xff09;&#xff1a; iduidnick_nameachievementleveljobregister_time11001牛客1号31007算法2020-01-01 10:00:00210…

网络编程的学习

思维导图 多路复用代码练习 select完成TCP并发服务器 #include<myhead.h> #define SER_IP "192.168.125.73" //服务器IP #define SER_PORT 8888 //服务器端口号int main(int argc, const char *argv[]) {//1、创建用于监听的套接字int sfd -1;s…

numpy基础运算

numpy基础运算 import numpy as npt1 np.array([1, 2, 3, 4, 5]) # numpy数组类型为numpy.ndarray print("type(np.array)", type(t1)) t2 np.array(range(6)) print("t1:", t1) print("t2:", t2)# np.arange([start,] stop [, stop, ], dtyp…

ChatGPT引领的AI面试攻略系列:AI全栈工程师篇

系列文章目录 AI全栈工程师&#xff08;本文&#xff09; 文章目录 系列文章目录一、前言二、面试题1. 基础理论与数据处理2. 机器学习3. 深度学习4. 大模型与迁移学习5. 计算机视觉6. 自然语言处理&#xff08;NLP&#xff09;7. 多模态学习8. AI生成内容&#xff08;AIGC&am…

QPainter::translate: Painter not active

画笔关联画布 就是这里少写了this指针

亚马逊API:快速获取全球商品详情的实用指南!

亚马逊提供了多种API&#xff0c;允许开发者访问其商品、订单、支付和其他与电商相关的数据。其中&#xff0c;与商品详情相关的API主要是Product Advertising API (PAAPI)。这个API可以帮助你获取亚马逊上的商品详情&#xff0c;如价格、描述、图片等。 以下是使用亚马逊Prod…

Python 基础语法:基本数据类型(一)

1 理解代码与写代码 1.1 什么是代码 代码是现实世界事物在计算机世界中的映射。 我们用计算机写代码&#xff0c;是为了利用计算机的高性能来解决现实世界中的问题。要用计算机来解决现实的问题&#xff0c;首先需要在计算机的世界里面把现实世界的一些事物和问题刻画出来…

05_Mongooes

Mongooes Mongoose是通过Node来操作MongoDB的一个模块。是基于Node.js的第三方模块。 一、Node.js安装 1.解压 2.创建文件夹 解压路径下&#xff0c;创建两个文件夹 node_global&#xff1a;全局安装位置 node_cache&#xff1a;缓存 3.配置 配置环境变量 在path路径…

毫秒生成的时间戳如何转化成东八区具体时间

假设现在有一个时间是1709101071419L 后端代码实现 Java代码&#xff08;东八区时间&#xff09; 在Java代码中&#xff0c;我们将时区从UTC调整为东八区&#xff08;UTC8&#xff09;&#xff1a; import java.time.Instant; import java.time.ZoneId; import java.time.Z…

FreeRTOS操作系统学习——FreeRTOS工程介绍

FreeRTOS工程介绍 核心文件 FreeRTOS的最核心文件只有2个&#xff1a; FreeRTOS/Source/tasks.cFreeRTOS/Source/list.c 文件功能如下图&#xff1a; 头文件相关 内存管理文件 文件在 Middlewares\Third_Party\FreeRTOS\Source\portable\MemMang 下&#xff0c;它也是放…