嵌入式学习69-C++(Opencv)

知识零碎:

QT的两种编译模式 1.debug 调试模式 2.release 发布模式 OpenCV在此模式下运行

图像是由像素点组成的;

常见图像中的像素点有4种组成方式

(单通道) 位图: 对应位的比特只有存在和不存在,亮和暗 两种状态,用01表示 像素深度为1bit

(单通道)灰度图: 把亮和暗划分为256个梯度,用一个字节(8bit)表示 像素深度为8bit

(黑白图像都属于灰度图)

(三通道)RGB图像: 3个字节,888 像素深度为24bit

(四通道)RGBA图像: A:透明度 显示背景色 0 不透明 255 全透明 像素深度为32bit

像素的深度 : 用于表达一个像素所需的比特数

图像二值化 将图像上的像素点的灰度值设置为0或255,也就是将整个图像呈现出明显的黑白效果的过程。 图像的二值化使图像中数据量大为减少 ,从而能凸显出目标的轮廓

二值化处理

1.先设立阈值,例如127,小于127为白 =0 大于127 为黑 =255

-----------------------------------------------------------------------------------------------------------------------------Mat 是最基本的容器类

Mat的构造函数 Mat mat(10, 10, CV_8UC3, Scalar(0, 0, 0));

三通道时Mat是按照BGR组合的

Mat 其实是一个模板,可以存放不同图像的组成方式

5,6,CV_8UC3

5行 6列 8:每个像素点占8个比特 U:无符号数据 3:每个像素点占用三个通道

BGR 888

256*256*256

人脸检测时,将 RGB图像转化为灰度图像 变为单通道的256 ,减少运算量和cpu的损耗

图像处理的本质: 矩阵运算,是一个二维数组

-------------------------------------------------------------------------------------------------------------------------------- 对比度调节


  1. 用cvtColor(origion, gray,COLOR_BGR2GRAY );函数转灰度或其他图像
  2. Mat roi = origion(Rect(10 ,10, 100, 100)); 重载函数调用运算符,获得图像的局部区域
  3. Resize 缩放图像
  4. Flip 翻转图像、

滤波

Blur 中值滤波(模糊算法)

某一点的像素= 周边一圈的像素和的平均值

拿2 举例 周围一圈/9 从而达到模糊的效果

锚点:卷积和的中心

高斯滤波Gaussianblur

Erode 腐蚀(消噪点) 通常是针对二值图像的, threshold用于转换二值图像(源图必须是灰度图)

cvtColor(mat, dest, COLOR_BGR2GRAY) threshold(dest, dest, 127, 255, THRESH_BINARY); 腐蚀时: 以卷积核中心点为中心,遍历整个二维数组,卷积核内所有像素都为1时,该点为1,有一个点为0时,该点为0

erode(dest, dest, Mat()); Mat()卷积核 默认3X3

Dilate 膨胀

Rectangle 绘制矩形

Circle 绘制圆形

Ellipse 绘制椭圆

相关推荐
IT_陈寒2 小时前
Vue这个坑我跳了两次,原来问题出在这
前端·人工智能·后端
新新技术迷2 小时前
Node给AI接口做SSE代理与鉴权
人工智能
redreamSo3 小时前
大模型是不是到顶了?瓶颈到底在哪
人工智能·openai
Oo9203 小时前
Tool Use 背后的技术逻辑
人工智能
姗姗来迟了3 小时前
Vue3封装AI流式对话组件踩坑实录
人工智能
码上天下4 小时前
用Pinia管理AI多会话状态
人工智能
用户054324329704 小时前
Next.js接大模型流式SSE实操踩坑
人工智能
Assby4 小时前
从 Function Calling 到 MCP:理解 Agent 工具调用的底层通信机制
人工智能·后端
小星AI5 小时前
Claude Code 从入门到精通,一步到位
人工智能
后端小肥肠5 小时前
Codex + Obsidian 做人生副本视频:输入主题文案,直通剪映草稿
人工智能·aigc·agent