#include <opencv2/opencv.hpp> #include <iostream> using namespace cv; using namespace std; int main(int argc, char** argv) { Mat src = imread("f:/images/shuang001.jpg"); Mat gray, binary; cvtColor(src, gray, COLOR_BGR2GRAY); threshol…
转载请注明出处:http://xiahouzuoxin.github.io/notes 腐蚀与膨胀 腐蚀和膨胀是图像的形态学处理中最主要的操作,之后遇见的开操作和闭操作都是腐蚀和膨胀操作的结合运算. 腐蚀和膨胀的应用非常广泛,并且效果还非常好: 腐蚀能够切割(isolate)独立的图像元素,膨胀用于连接(join)相邻的元素,这也是腐蚀和膨胀后图像最直观的展现 去噪:通过低尺寸结构元素的腐蚀操作非常easy去掉分散的椒盐噪声点 图像轮廓提取:腐蚀操作 图像切割 等等...(在文后给出一则简单有用…
原创文章,欢迎转载,转载请注明出处 首先什么是图像形态学?额,这个抄下百度到的答案.基本思想:    用具有一定形态的结构元素去度量和提取图像中的对应形状已达到对图像分析和识别的目的,形态学图像处理表现为一种领域运算方式(这个和前面的模糊运算是一样的运算方式),效果取决于结构元素(就是前面smooth里面的核)的大小,内容以及逻辑运算的性质.看了这些定义是不是很晕,对很晕...我比较关心的是它的用途和怎么计算.    用途是:简化图像数据,保持他们基本的形状特性,并出去不相干的结构.    基本…
目录: (一) 顶帽(原图像与开操作图像的差值)(二) 黑帽(原图像与闭操作图像的差值)(三) 形态学梯度  (1)基本梯度(膨胀后的图像与腐蚀后的图像差值)  (2)内部梯度(原图像减去腐蚀后的图像差值)  (3)外部梯度(膨胀后图像与原图差值) (一) 顶帽(原图像与开操作图像的差值) 1 import cv2 as cv 2 import numpy as np 3 4 def top_hat_demo(image): 5 gray = cv.cvtColor(image,cv.COLOR…
形态学操作其实就是改变物体的形状,比如腐蚀就是"变瘦",膨胀就是"变胖",看下图就明白了: 形态学操作一般作用于二值化图(也可直接作用于原图),来连接相邻的元素或分离成独立的元素.腐蚀和膨胀是针对图片中的白色部分! 腐蚀 腐蚀的效果是把图片"变瘦",其原理是在原图的小区域内取局部最小值.因为是二值化图,只有0和255,所以小区域内有一个是0该像素点就为0: 这样原图中边缘地方就会变成0,达到了瘦身目的 OpenCV中用cv2.erode()函数进…
目标: 学习不同的形态操作 例如 腐蚀.膨胀.开运算.闭运算 等. 我们要学习的函数有 cv2.erode(),cv2.dilate(),cv2.morphologyEx() 等. 原理 :一般对二值化图像进行形态学转换操作.输入的第一个参数为原始图像:第二个参数为结构化元素(核),该参数决定操作性质.两个基本形态学操作是腐蚀膨胀,衍生出了开运算.闭运算.梯度运算等等 腐蚀 :腐蚀操作会把前景物体的边缘腐蚀掉.原理是卷积核沿着图像滑动,如果与卷积核对应的原图像像素值都是1,那么中心元素保持原值,…
腐蚀与膨胀是形态学滤波.其中,腐蚀是最小值滤波,膨胀是最大值滤波,即分别选取内核中的最小值与最大值赋值给锚点.若内核为 N×1 或 1×N 形状,可用于横纵方向直线检测. 膨胀:dilate 函数 void dilate (InputArray src, OutputArray dst, InputArray kernel, Point anchor = Point(-1, -1), int iterations = 1, int borderType = BORDER_CONSTANT, co…
1.cv2.erode(src, kernel, iteration) 参数说明:src表示的是输入图片,kernel表示的是方框的大小,iteration表示迭代的次数 腐蚀操作原理:存在一个kernel,比如(3, 3),在图像中不断的平移,在这个9方框中,哪一种颜色所占的比重大,9个方格中将都是这种颜色 代码: 1.读取带有毛刺的图片 2.使用cv2.erode进行腐蚀操作,比较不同的kernel对结果的影响 3.读取圆的图片 4.使用cv2.erode进行腐蚀操作,比较不同的迭代次数对结…
图片的像素 像素:组成图片的单位 RGB:颜色由 RGB三种颜色组成 颜色深度:对于8bit的颜色深度来说,它可以表示的颜色范围是 0 ~ 255,对于RGB图片来说,8位颜色深度可以表示 (2^8)^3 种颜色 宽高:图片横向与纵向的像素点个数 大小:宽 * 高 * 3 * 8 bit = xxx bit alpha:有些图片还会有一个alpha通道,描绘图片的透明度信息 常见颜色存储格式:RGB.BGR 像素操作 获取一个具体点的像素值: r, g, b = img[x, y] 写入一个颜色…
读取并显示图像 如果读取图像首先要导入OpenCV包,方法为: import cv2 读取并显示图像 img = cv2.imread("C:\test1.jpg") OpenCV目前支持读取bmp.jpg.png.tiff等常用格式.更详细的请参考OpenCV的参考文档. 接着创建一个窗口 cv2.namedWindow("Image") 然后在窗口中显示图像 cv2.imshow("Image", img) 按键等待 waitKey() 这个…