Qt图像处理技术七:轮廓提取
Qt图像处理技术七:轮廓提取
效果图

原理
图像先二值化让rgb数值相同,只有(0,0,0)或者(255,255,255)
取每个点的周围8个点,如果周围8个点与该点rgb值相同,则需要将该点描黑为(255,255,255)
代码
QImage ContourExtraction(const QImage &img)
{
int width = img.width();
int height = img.height();
int pixel[8];
QImage binImg = Binaryzation(img);
QImage newImg = QImage(width, height, QImage::Format_RGB888);
newImg.fill(Qt::white);
uint8_t *rgb = newImg.bits();
uint8_t *binrgb = binImg.bits();
int nRowBytes = (width * 24 + 31) / 32 * 4;
int lineNum_24 = 0;
for (int y = 1; y < height - 1; y++) {
for (int x = 1; x < width - 1; x++) {
memset(pixel, 0, 8);
lineNum_24 = y * nRowBytes;
if (binrgb[lineNum_24 + x * 3] == 0) {
rgb[lineNum_24 + x * 3] = 0;
rgb[lineNum_24 + x * 3 + 1] = 0;
rgb[lineNum_24 + x * 3 + 2] = 0;
pixel[0] = binrgb[(y - 1) * nRowBytes + (x - 1) * 3];
pixel[1] = binrgb[(y) * nRowBytes + (x - 1) * 3];
pixel[2] = binrgb[(y + 1) * nRowBytes + (x - 1) * 3];
pixel[3] = binrgb[(y - 1) * nRowBytes + (x) * 3];
pixel[4] = binrgb[(y + 1) * nRowBytes + (x) * 3];
pixel[5] = binrgb[(y - 1) * nRowBytes + (x + 1) * 3];
pixel[6] = binrgb[(y) * nRowBytes + (x + 1) * 3];
pixel[7] = binrgb[(y + 1) * nRowBytes + (x + 1) * 3];
if (pixel[0] + pixel[1] + pixel[2] + pixel[3] + pixel[4] + pixel[5] + pixel[6] + pixel[7] == 0) {
rgb[lineNum_24 + x * 3] = 255;
rgb[lineNum_24 + x * 3 + 1] = 255;
rgb[lineNum_24 + x * 3 + 2] = 255;
}
}
}
}
return newImg;
}
Qt图像处理技术七:轮廓提取的更多相关文章
- Win8 Metro(C#)数字图像处理--2.65形态学轮廓提取算法
原文:Win8 Metro(C#)数字图像处理--2.65形态学轮廓提取算法 [函数名称] 形态学轮廓提取函数 WriteableBitmap Morcontourextract ...
- Win8 Metro(C#)数字图像处理--2.40二值图像轮廓提取算法
原文:Win8 Metro(C#)数字图像处理--2.40二值图像轮廓提取算法 [函数名称] 二值图像轮廓提取 ContourExtraction(WriteableBitm ...
- 图像处理-07-图像的轮廓提取-Robert算子
图像的轮廓提取-Robert算子 图像的边缘:周围像素灰度有阶跃变化或“屋顶”变化的那些像素的集合,边缘广泛存在于物体与背景之间.物体与物体之间,基元与基元之间,是图像分割的重要依据. 物体的边缘是由 ...
- Win8Metro(C#)数字图像处理--2.40二值图像轮廓提取
http://dongtingyueh.blog.163.com/blog/static/4619453201271481335630/ [函数名称] 二值图像轮廓提取 Contour ...
- FPGA与数字图像处理技术
数字图像处理方法的重要性源于两个主要应用领域: 改善图像信息以便解释. 为存储.传输和表示而对图像数据进行处理,以便于机器自动理解. 图像处理(image processing): 用计算机对图像进行 ...
- webpack4 系列教程(七): SCSS提取和懒加载
教程所示图片使用的是 github 仓库图片,网速过慢的朋友请移步>>> (原文)webpack4 系列教程(七): SCSS 提取和懒加载. 个人技术小站: https://god ...
- Qt开发技术:图形视图框架(二)场景QGraphicsScene、QGraphicsItem与QGraphicsView详解
前话 Qt的图形视图框架,最核心的三个类为:QGraphicsScene.QGraphicsItem与QGraphicsView. 基于图形框架的高级白板软件Demo QGraphicsSce ...
- HTML5图形图像处理技术研究
摘要:图形图像处理平台大部分是传统的C/S架构的桌面应用程序,维护困难,共享性差,而B/S架构的Web程序具有易维护.易共享的优点.本文研究了基于HTML5的Web图形图像处理技术,用HTML5实现了 ...
- GDI+图形图像处理技术中Pen和Brush的简单使用和简单图形的绘制(C#)
1.Graphics Graphics对象是GDI+绘图表面,因此在Windows窗体应用程序中要使用GDI+创建绘图,必须要先创建Graphics.在给窗体注册一个Paint事件后,Graphics ...
- 三维模型2.5D轮廓提取及遮挡部分的剔除
轮廓提取相对容易,只需在2.5D渲染视角下,导出模型的顶点坐标以及基于视角的消隐后的三角形面,将三角面投影后合并就可得到轮廓,轮廓坐标基于2.5d图的基准坐标换算就得到.提取轮廓的在我另外一篇文章中有 ...
随机推荐
- HTTP协议与RESTful API实战手册(终章):构建企业级API的九大秘籍 🔐
title: HTTP协议与RESTful API实战手册(终章):构建企业级API的九大秘籍 date: 2025/2/28 updated: 2025/2/28 author: cmdragon ...
- tsconfig.json报错问题
tsconfig.json报错问题 前言 创建 tsconfig.json 配置文件时,VS Code 会自动检测当前项目当中是否有ts文件,若没有则报错,提示用户需要创建一个ts文件后,再去使用ty ...
- 分享一个我遇到过的“量子力学”级别的BUG。
你好呀,我是歪歪. 前几天在网上冲浪的时候,看到知乎上的这个话题: 一瞬间,一次历史悠久但是记忆深刻的代码调试经历,"刷"的一下,就在我的脑海中蹦出来了. 虽然最终定位到的原因令人 ...
- Bringing machine 'default' up with 'virtualbox' provider... Your VM has become "inaccessible." Unfortunately, this is a critical error with VirtualBox that Vagrant can not cleanly recover from.
启动虚拟机报错 vagrant up Bringing machine 'default' up with 'virtualbox' provider...Your VM has become &qu ...
- 如何写自己的springboot starter?自动装配原理是什么?
如何写自己的springboot starter?自动装配原理是什么? 官方文档地址:https://docs.spring.io/spring-boot/docs/2.6.13/reference/ ...
- Joker 智能开发平台再推重磅新品,引领开发新潮流
自 Joker 智能开发平台的前端可视化版本惊艳亮相后,便迅速在行业内掀起热潮,其创新的理念与出色的性能,为开发者和企业打造了高效.便捷的开发新路径,备受瞩目与好评.如今,Joker 智能开发平台即将 ...
- bug|jest|vue|记录:关于【4-4 使用 TDD 的方式开发 Header 组件(1)】05:26时的运行测试用例出错的问题
错误情景 提示 jest 配置错误 Configuration error Configuration error: Could not locate module @/components/Hell ...
- Zotero 附件云同步(非 WebDAV 方法)
1.说明 适用范围更广,但是操作步骤较复杂. 使用 zotero 仅同步题录信息,使用其他云同步程序同步文献的附件,此处以坚果云为例进行演示. 准备: zotero 和 坚果云 注册账号 zotero ...
- netstat 与 ss 比较
一.netstat 命令 1. 核心功能 显示网络连接.路由表.接口统计等信息. 支持TCP.UDP.UNIX域套接字等协议. 可查看进程与端口的关联. 2. 常用语法示例 查看所有活动连接 nets ...
- cpp简单总结
1.简述智能指针的特点,简述new和malloc的区别. shared_ptr,显现共享式特点,多个同类型的shared指针可以共享一个对象,当持有者的计数归0,shared_ptr指向的指针就会被释 ...