OpenCV缺陷检测

2023-10-30

新手上路,欢迎高手指点。
原图:
在这里插入图片描述

OpenCV缺陷检测代码:

// An highlighted block
#include "head.h"

int main() {
	Mat img = imread("image/1204.bmp");
	//assert(im.data);
	if (!img.data) { cout << "cuowu!" << endl; return -1; }
	Mat img_gray; Mat img2;
	cvtColor(img,img_gray, COLOR_BGR2GRAY);
	//二值化
	threshold(img_gray, img2,100, 255, THRESH_BINARY_INV);
	
	//形态学处理 闭操作  先膨胀后腐蚀
	Mat element = getStructuringElement(MORPH_RECT,Size(17, 17));
	morphologyEx(img2, img2, MORPH_CLOSE, element);
	
	//腐蚀
	Mat element1 = getStructuringElement(MORPH_RECT, Size(3, 1));
	morphologyEx(img2, img2, MORPH_ERODE, element1);
	
	vector<vector<Point> > contours;
	findContours(img2, contours, RETR_TREE, CHAIN_APPROX_SIMPLE);
	drawContours(img, contours, -1, Scalar(0, 255, 0), 1, 8);
	vector<vector<Point> > contours1;
	for (int i=0; i <= contours.size() - 1; i++) {
		float area = contourArea(contours[i]);
		if ((area < 5500&&area>5000)||area>25000) {
			contours1.push_back(contours[i]);
		}
	}
	string str[2] = { "D","S" };
	drawContours(img, contours1, -1, Scalar(0, 0, 255), 1, 8);
	
	for (int i = 0; i <= contours1.size() - 1; i++) {
		Rect rect = boundingRect(contours1[i]);
		rectangle(img, rect, Scalar(0, 0, 255), 1, 8);
		putText(img,str[i] , Point(rect.x -20+ rect.width / 2, rect.y - 30), CV_FONT_HERSHEY_COMPLEX, 1, Scalar(0, 0, 255), 2);
	}
	namedWindow("1");
	imshow("1", img);
	namedWindow("2");
	imshow("2", img_gray);
	namedWindow("3");
	imshow("3", img2);
	waitKey(0);
	return 0;
}

结果:
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

OpenCV缺陷检测 的相关文章

  • oracle中的几种分区方式

    1 列表分区 1 1 分区技术实质可以把数据分摊到不同的物理位置 增加I O负载 提高检索效率 可用性 分区表可以跨越表空间 而普通表则不然 好处就是如果表的一个分区损坏 其他分区不会受到影响我们只需要修复损坏的分区即 可 1 2 创建li
  • 牛顿迭代法解非线性方程组(附C++代码)

    目录 一 公式介绍 二 应用环境 三 C 代码 实例说明 C 编译环境 C 代码 运行结果 特别注意 解决方法 一 公式介绍 牛顿迭代法基本公式 迭代出 面对非线性方程组问题 将上式变形 其中为 注 这里面的不再时代表一个值 而是代表关于变
  • SpringBoot---@DeleteMapping

    DeleteMapping 在编写代码时引用了 DeleteMapping 注解 DeleteMapping value remove courseNo public String remove PathVariable courseNo
  • linux中shell脚本命令使用详解

    文章目录 一 普通用户和超级用户 二 关于系统的操作 三 关于文件操作 3 1 ls显示文件 3 2 cd进出目录 3 3 mkdir创建目录 3 4 touch创建文件 3 5 cp复制命令 3 6 rm删除命令 3 7 cat命令 3
  • 注意力机制:CA - Coordinate Attention for Efficient Mobile Network Design(文末附代码)

    注意力机制 CA Coordinate Attention for Efficient Mobile Network Design 摘要 引言 具体而言 优势 相关工作 Mobile Network 架构 注意力机制 Coordinate
  • java 正则表达式 检测数学公式是否正确_java 正则表达式 检测数学公式是否正

    java 正则表达式 检测数学公式是否正 2021 02 05 13 33 36 简介 java中正则表达式基本用法的使用 1 Test01 java 使用正则表达式使代码变得非常简洁 2 TestMatcher01 java Matche
  • IBM近期扩充Watson认知API服务

    本文转载至 http www infoq com cn news 2016 03 watson cognitive apis 近期 IBM对Watson认知API服务进行了扩充 新增了情绪和语调分析API的测试版本 Watson的情绪分析A
  • Flutter 组件抽取:验证码输入功能(CodeInputContainer)

    简介 验证码输入框 可选需要输入的验证码个数 输入达指定个数后自动回调 效果 范例 class TestPageState extends State
  • 【通信原理】七、数字带通传输系统

    文章目录 一 2ASK振幅键控 2ASK振幅键控原理 2ASK包络检波 2ASK相干解调法 二 2FSK频移键控 过零点检测解调法 三 2PSK相移键控 四 2DPSK差分相移键控 差分相干解调 相位比较法 五 已调信号功率谱密度 六 抗噪
  • VB.Net正则表达式大全(3)

    深入浅出之正则表达式 注 JanGoyvaerts为RegexBuddy写的教程的译文 前言 半年前我对正则表达式产生了兴趣 在网上查找过不少资料 看过不少的教程 最后在使用一个正则表达式工具RegexBuddy时发现他的教程写的非常好 可
  • IDEA插件之输入法自动切换【Smart Input Source】

    MAC系统推荐快捷键 针对输入切换无需快捷键 但是在某些场景下比如Git Diff的时候可能存在自动跳转到源文件的情况 这种时候需要手动关闭自动切换功能 给作者提了个建议对这种场景进行优化 建议使用的快捷键 C代表关闭 O代表打开 介绍 解
  • 量子云计算:实现自我验证!

    量子云计算 实现自我验证 背景 即使对于世界上最强大的经典计算机来说 有些极度复杂的计算仍然需要花费漫长的时间 可是 从理论上说 量子计算机却可以完全胜任非常复杂的计算任务 原因是 不同于经典计算机的比特位 量子计算机拥有 量子位 经典二进
  • 人工智能讲师专家老师叶梓人工智能讲师之机器学习与深度学习-34

    接上一篇 系列博文 人工智能讲师叶梓关于人机器学习与深度学习入门课程课件 为系列博文 更多课程 及老师资料可点击 个人主页 最小二乘法的示意图 R语言实现的一元线性回归 一元回归的PYTHON实现 IMPORT PANDAS AS PD f
  • 前端实现csv文件的解析预览、上传、下载

    最近遇到了一些关于csv文件的上传 下载 解析预览 删除的需求 因为之前没有做过 尤其是关于csv的解析并预览 于是记录一下 上传 关于上传 绝大部分的选择都是通过第三方的OSS进行存储 比如阿里云的 这个其实没什么难度 有文档可以看 对于
  • ServiceLoader SPI的简单认知

    写了这么长时间的代码 竟然没有用过jdk SPI的ServiceLoader 深表遗憾 为什么写这个 因为在看Sentinel配置代码的时候 看到了这个 挺好用的 用法 在jar包中 resources 中建立 META INF servi

随机推荐

  • Java客户端连接不了安装在CentOS7上的redis解决方案

    今天初试了使用Java Redisson 客户端连接安装在CentOS上的redis 发现一直连接不了 报错信息如下 Exception in thread main com lambdaworks redis RedisException
  • HTML教程

    文章目录 HTML 1 HTML 概述 2 第一个 HTML 代码 3 HTML 标签分类 4 HTML基本标签 4 1 结构标签 4 2 排版标签 4 3 块标签和行内标签 4 4 文本标签 已过时 4 5 文本格式标签 4 6 标题标签
  • mybatis TypeHandler详解

    1 TypeHandler概念 TypeHandler 类型转换器 在mybatis中用于实现java类型和JDBC类型的相互转换 mybatis使用prepareStatement来进行参数设置的时候 需要通过typeHandler将传入
  • 简单的LVGL按键例程

    以下是一个简单的LVGL按键例程 使用LVGL的按键事件来处理按钮的单击和长按操作 include lvgl lvgl h void btn click action lv obj t obj 处理按钮单击事件 void btn long
  • ASP.NET -- WebForm -- ScriptManager 类

    ASP NET WebForm ScriptManager 类 通过 ScriptManager 可注册随后将作为页面一部分呈现的脚本 1 注册并立即执行脚本 RegisterStartupScript 方法 例 在ASP NET中实现和
  • 构建Java Web应用实验

    1 创建负责下载WAR文件的镜像 1 创建一个目录fetcher 保存相关的配置信息和内容 在 后输入mkdir fetcher cd fetcher命令 然后按Enter键 创建fetcher目录并进入该目录 示例代码如下 root xi
  • 知识追踪实战:lstm+ Multi-head Attention注意力机制的学生做题成绩预测实战

    项目视频讲解 知识追踪实战 lstm Multi head Attention注意力机制的学生做题成绩预测实战 哔哩哔哩 bilibili from collections import Counter import torch from
  • 小程序蓝牙亲身总结

    问题 1 小程序蓝牙搜索能不能搜到手机设备 2 如何判断蓝牙是否打开 3 搜索指定设备 4 开发者工具和 Android 上获取到的deviceId为设备 MAC 地址 iOS 上则为设备 uuid 因此deviceId不能硬编码到代码中
  • 前端框架 (一)zTree 从数据库中动态加载树形菜单

    这几天做动态菜单用到了这个插件 目前用的很广泛的一个开源框架 最新发布的QUI框架就是用这个插件开发的菜单部分 因此还是很值得深入研究和学习 通过使用感觉功能很丰富 好多函数不用自己开发和编写 官网上有很详尽的API可以参考 用着算顺手但学
  • ASP.NET 与ASP.NET Core区别--概念及特征比对

    随着 NET的发展 NET Core对跨平台支持得越来越好 ASP NET Core能运行在Windows macOS 或 Linux 上 这就意味着ASP NET Core开发的网站 可以在除了Windows之外的平台运行 而且ASP N
  • 每天读一遍,不久你就会变

    在平凡枯燥简单的工作中 做无可取代的人 再烦 也别忘记微笑 再急 也要注意语气 再苦 也别忘坚持 再累 也要爱自己 低调做人 你会一次比一次稳健 高调做事 你会一次比一次优秀 成功的时候不要忘记过去 失败的时候不要忘记还有未来 有望得到的要
  • cadence allegro番外:制作含热风焊盘、反焊盘的过孔

    前言 需要先参考下列文章 padstack editor制作过孔 cadence allegro番外 制作flash焊盘 在以上文章中 已经制作了一个可用于两层板的过孔 但是在多层板中 过孔是需要链接或避让负电层的 因此需要在过孔中添加热风
  • 麒麟v10 curl报错:SSLv3_client_method version OPENSSL_1_1_0 not define

    curl及yum大致错误 usr bin cmake3 relocation error usr lib64 libcurl so 4 symbol SSLv3 client method version OPENSSL 1 1 0 not
  • 【STM32 学习】电源解析(VCC、VDD、VREF+、VBAT)

    VCC 电源电压 GND 电源供电负电压 通常接地 VDD 模块工作正电压 VSS 模块工作负电压 VREF ADC参考正电压 VREF ADC参考负电压 VBAT 电池或其他电源供电 VDDA 模拟供电正电压 VSSA 模拟供电负电压 一
  • c++11:动态内存与智能指针

    为了更容易 同时也更安全 地使用动态内存 新的标准库提供了两种智能指针 smart pointer 类型来管理动态对象 智能指针的行为类似常规指针 重要的区别是它负责自动释放所指向的对象 新标准库提供的这两种智能指针的区别在于管理底层指针的
  • CV::Mat数据拷贝 memcpy 踩坑

    1 cv mat 初始化 cv Mat img1 h w CV 8UC3 cv Mat img1 h w CV 8UC3 data 一般cv mat 初始化后数据内存 data 段都是连续的 可以用isContinuous 函数判断存储是否
  • Git克隆、拉取最新代码、上传代码到远程仓库

    文章目录 工作区 暂存区 版本库 1 提交代码到仓库 2 pull拉取最新代码 3 克隆 拉取代码 解决冲突 4 git 关联仓库并上传代码 5 关联已有仓库并提交代码 6 git记住某个仓库的账号密码 工作区 暂存区 版本库 工作区 就是
  • sqli-labs靶场Less-15

    1 访问首页 Less 15 index php 这里的传参点是表单中的uname passwd 判断是否是数字形传参 判断是否有单引号闭合 判断是否是双引号闭合 判断是否单引号 括号闭合 判断是否是双引号 括号闭合 如果以上都不适 哪以上
  • type object ‘Path‘ has no attribute ‘home‘

    报错 根据堆栈定位 是matplotlib init py文件里面562行位置报错的问题 讲道理 应该没有问题来着 进入到matplotlib init py文件 然后悬停Path和home 发现 emmm 文件居然不一样 好的 在我尝试更
  • OpenCV缺陷检测

    新手上路 欢迎高手指点 原图 OpenCV缺陷检测代码 An highlighted block include head h int main Mat img imread image 1204 bmp assert im data if