![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Opencv
otnemal
加油!!!
展开
-
第十一课 膨胀与腐蚀
形态学操作(morphology operators)-膨胀·图像的形态学操作-基于形状的一系列图像处理操作的合集,主要是基于集合论基础的形态学数学·形态学有四个基本操作:腐蚀,膨胀,开,闭·膨胀与腐蚀是图象处理中最常用的形态学操作手段形态学操作-膨胀·跟卷积操作类似,假设图象中A和机构元素B,结构元素B在A上面移动,其中B定义其中心为锚点,计算B覆盖下A的最大像素值用来替换锚点的像素,其中B作为结构体是可以是任意形状的。相关API·gerStructuringElement(int sha原创 2021-09-22 22:48:53 · 139 阅读 · 0 评论 -
第十课 图像模糊二
·中值滤波中值滤波是一种统计排序的滤波器,中值滤波对椒盐噪声有很好的的抑制作用椒盐噪声一般为极大值和极小值,用中值滤波能很好地抑制其噪点,对3x3邻域像素排序然后计算均值和中值,从左到右从上到下来吧极大值替换掉。注:椒盐滤波就是图像的白点和黑点噪声或者噪点·双边滤波·均值模糊无法客服边缘像素信息丢失缺陷,原因是均值滤波是基于平均权重的·高斯模糊部分克服了该缺陷,但是无法完全避免,因为没有考虑像素值的不同·高斯双边模糊是边缘保留的滤波方法,避免了边缘信息丢失,保留了图像轮廓不变相关API·中原创 2021-09-22 22:45:06 · 146 阅读 · 0 评论 -
第三课 Mat对象
Mat对象与IplImage对象·Mat对象Opencv2.0之后引进的图像数据结构、自动分配内存,不存在内存泄露的问题,是面向对象的数据结构。分了两个部分,头部与数据部分。·IplImage是从2001年Opencv发布后就一直存在,是C语言风格的数据结构,需要开发者自己分配与管理内存,对大的程序使用他容易导致内存泄露问题Mat对象构造函数与常用方法Mat()Mat(int rows, int cols, int type)Mat(Size size, int type)Mat(int ro原创 2021-09-20 15:26:43 · 98 阅读 · 0 评论 -
第九课 模糊图象一
模糊原理·Smooth/Blur是图象处理中最简单和常用的操作之一·使用该操作的原因之一就为了给图像预处理时候减低噪声·使用Smooth/Blur操作其背后是数学的卷积计算·通常这些卷积算子计算都是线性操作,所以又叫线性滤波·归一化盒子滤波(均值滤波)·高斯滤波相关的API·均值模糊src表示输入图像dst表示输出图像Szie()是指窗口的大小Point()是指中心像素的位置(-1,-1)是中心的意思,默认不改·高斯模糊Size()是窗口的大小,sigma是用来调节高斯原创 2021-09-20 15:23:51 · 71 阅读 · 0 评论 -
第八课 绘制形状与文字
·使用cv::Point与cv::ScalarPoint表示2D平面上一个点x,yPoint p;p.x=10;p.y=8;orp=Pont(10.8);`Scalar表示四个元素的向量Scalar(a,b,c);//a=blue,b=green,c=red//表示RGB三个通道·绘制线,矩形,圆,椭圆等基本几何形状·画线cv::line(LINE_4\LINE_8\LINE_AA)画椭圆cv::ellipse画矩形cv::rectangle·画圆cv::circle·画填充cv原创 2021-09-20 15:21:53 · 57 阅读 · 0 评论 -
第七课 调整图像亮度和对比度
理论·图像变换可以看作如下:-像素变换-点操作-邻域操作-区域调整图像亮度和对比度输入像素变换-点操作埃尔法调的是对比度,贝塔调的是亮度重要的API·Mat new_image = Mat::zeros(image.size(),image.type());创建一张跟原图像大小和类型一致的空白图像、像素值初始化为0·saturate_cast<uchar>(value)确保值大小范围为0-255之间·Mat.at<Vec3b>(y,x)[index]=value给每个原创 2021-09-20 15:19:25 · 160 阅读 · 0 评论 -
第六课图像混合
第六课图像混合线性混合操作两边相加其实是两个图像的每一个像素进行相加,每个像素都进行上述公式的操作就,可以将两个图像进行混合随着x的变化而全部都进行变化。相关的API(addWeighted)void cv::addWeighted( inputArray src1, //参数1:输入图像Mat-src1 double alpha, //参数2:输入图像src1的alph原创 2021-09-14 19:50:08 · 446 阅读 · 0 评论 -
第五课图像操作
第五课图像操作读写图像·imread可以指定加载为灰度图像或者RGB图像·Imwrite保存图像文件,类型由拓展名决定读写像素·读写一个GRAY像素点的像素值(CV_8UC1)Scalar intensity =img.at(y,x);或者Scalar internsity = img.at(Point(x,y));`读写一个RGB像素点的像素值Vec3f intensity = img.at<Vec3f>(y,x);float blue = intensity.val[0]原创 2021-09-14 18:22:29 · 81 阅读 · 0 评论 -
第二课 矩阵的掩膜操作
第二课 矩阵的掩膜操作基础知识了解Opencv中rows是指一个图片一行中所拥有的像素,cols是指一个图片一列中所拥有的像素例如channels:通道,矩阵中的每一个矩阵元素拥有的值的个数,比如说 3 * 4 矩阵中一共 12 个元素,如果每个元素有三个值,那么就说这个矩阵是 3 通道的,即 channels = 3。常见的是一张彩色图片有红、绿、蓝三个通道。获取图像像素指针CV_Assert(myImage.depth()==CV_8U);Mat.ptr(int i=0)获取像素矩阵的指针原创 2021-09-12 21:53:21 · 272 阅读 · 0 评论 -
第一课 Opencv C++
Opencv C++ 第一课加载图像 cv::imread修改图像 cv::cvtColor保存图像 cv::imwrite加载图像(用cv::imread)· imread 功能是加载图像文件成为一个Mat对象,其中第一个参数表示图像文件名称· 第二个参数,表示加载的图像是什么类型,支持常见的三个参数值· IMREAD_UNCHANGED(<0)表示加载原图,不做任何改变· IMREAD_GRAYSCALE(0)表示把原图作为灰度图加载出来` IMREAD_COLOR(>0)原创 2021-09-11 01:07:45 · 96 阅读 · 0 评论