
Opencv机器视觉
文章平均质量分 74
aaa1163548340
智能家居,物联网,车载电子
展开
-
OpenCV基础入门(十)
第十节、形态学操作(二)开操作- open先腐蚀后膨胀 可以去掉小的对象,假设对象是前景色,背景是黑色闭操作-close先膨胀后腐蚀(bin2) 可以填充小的洞(fill hole),假设对象是前景色,背景是黑色形态学梯度- Morphological Gradient膨胀减去腐蚀 又称为基本梯度(其它还包括-内部梯度、方向梯度)顶帽 – top hat顶帽 是原图像与开操作之间的差值图像黑帽黑帽是闭操作图像与源图像的差值图像...原创 2020-07-27 22:55:54 · 249 阅读 · 0 评论 -
OpenCV基础入门(九)
第九节、形态学操作(一)原理:图像形态学操作 – 基于形状的一系列图像处理操作的合集,主要是基于集合论基础上的形态学数学 形态学有四个基本操作:腐蚀、膨胀、开、闭 膨胀与腐蚀是图像处理中最常用的形态学操作手段形态学操作-膨胀跟卷积操作类似,假设有图像A和结构元素B,结构元素B在A上面移动,其中B定义其中心为锚点,计算B覆盖下A的最大像素值用来替换锚点的像素,其中B作为结构体可以是任意形状形态学操作-腐蚀腐蚀跟膨胀操作的过程类似,唯一不同的是以最小值替换锚点重叠下图像的像素值相关原创 2020-07-27 22:54:04 · 134 阅读 · 0 评论 -
OpenCV基础入门(八)
第八节、模糊图像操作模糊原理:Smooth/Blur 是图像处理中最简单和常用的操作之一使用该操作的原因之一就为了给图像预处理时候减低噪声使用Smooth/Blur操作其背后是数学的卷积计算通常这些卷积算子计算都是线性操作,所以又叫线性滤波归一化盒子滤波(均值滤波)高斯滤波相关API:均值模糊 - blur(Mat src, Mat dst, Size(xradius, yradius), Point(-1,-1));高斯模糊...原创 2020-07-27 22:52:19 · 146 阅读 · 0 评论 -
OpenCV基础入门(七)
第七节、绘制形状与文字使用cv::Point与cv::ScalarPoint表示2D平面上一个点x,y Point p; p.x = 10; p.y = 8; 或者p = Pont(10,8); 2. Scalar表示四个元素的向量 Scalar(a, b, c);// a = blue, b = green, c = red表示RGB三个通道绘制线、矩形、园、椭圆等基本几何形状画线...原创 2020-07-27 22:49:25 · 149 阅读 · 0 评论 -
OpenCV基础入门(六)
第六节、调整图像亮度与对比度图像变换可以看作如下:- 像素变换 – 点操作 g(i,j)=af(i,j)+β其中a>0,β是增益变量。- 邻域操作 – 区域调整图像亮度和对比度属于像素变换-点操作重要的APIMat new_image = Mat::zeros( image.size(), image.type() ); 创建一张跟原图像大小和类型一致的空白图像、像素值初始化为0 saturate_cast<uchar>(value)确保值大...原创 2020-07-27 22:45:06 · 260 阅读 · 0 评论 -
OpenCV基础入门(五)
理论-线性混合操作其中a的取值范围为0~1之间相关API (addWeighted) 参数1:输入图像Mat – src1 参数2:输入图像src1的alpha值 参数3:输入图像Mat – src2 参数4:输入图像src2的alpha值 参数5:gamma值 参数6:输出混合图像 注意点:两张图像的大小和类型必须一致才可以 ...原创 2020-07-27 22:31:43 · 117 阅读 · 0 评论 -
OpenCV基础入门(四)
第四节、图像操作读写图像imread 可以指定加载为灰度或者RGB图像 Imwrite 保存图像文件,类型由扩展名决定读写像素读一个GRAY像素点的像素值(CV_8UC1): Scalar intensity = img.at<uchar>(y, x); 或者 Scalar intensity = img.at<uchar>(Point(x, y)); 2. 读一个RGB像素点的像素值: Vec3f intensity...原创 2020-07-27 21:58:08 · 352 阅读 · 0 评论 -
OpenCV基础入门(三)
第三节、Mat对象Mat对象与IplImage对象Mat对象OpenCV2.0之后引进的图像数据结构、自动分配内存、不存在内存泄漏的问题,是面向对象的数据结构。分了两个部分,头部与数据部分 IplImage是从2001年OpenCV发布之后就一直存在,是C语言风格的数据结构,需要开发者自己分配与管理内存,对大的程序使用它容易导致内存泄漏问题Mat对象构造函数与常用方法 常用方法: void copyTo(Mat mat) void convertTo(Mat d原创 2020-07-27 21:51:17 · 771 阅读 · 0 评论 -
OpenCV基础入门(二)
第二节、矩阵的掩膜操作获取图像像素指针CV_Assert(myImage.depth() == CV_8U); Mat.ptr<uchar>(int i=0) 获取像素矩阵的指针,索引i表示第几行,从0开始计行数。 获得当前行指针const uchar* current= myImage.ptr<uchar>(row ); 获取当前像素点P(row, col)的像素值 p(row, col) =current[col]像素范围处理saturate_cast&l..原创 2020-07-27 21:44:59 · 203 阅读 · 0 评论 -
OpenCV基础入门(一)
OpenCV 3.1.0 +VS2015 开发环境配置:https://blog.youkuaiyun.com/hustlx/article/details/50974336第一节、加载、修改、保存图像加载图像(用cv::imread)imread功能是加载图像文件成为一个Mat对象,其中第一个参数表示图像文件名称 第二个参数,表示加载的图像是什么类型,支持常见的三个参数值 IMREAD_UNCHANGED (<0) 表示加载原图,不做任何改变 IMREAD_GRAYSCALE ( 0)表示把原原创 2020-07-27 21:42:54 · 243 阅读 · 0 评论