opencv学习与实战
文章平均质量分 81
学习opencv的基本操作,附上一些实战解说和代码。实战过程中,我都用rick的图片进行实验
蜡笔小新配吉良吉影
一个冲冲冲的大学生
展开
-
傅里叶变换(opencv_python学习)
通过使用cv.getOptimalDFTSize()函数,我们可以确保输入图像的尺寸符合傅里叶变换的要求,从而获得更好的计算性能和结果质量。numpy.fft.ifft2():计算二维输入数组的二维逆傅里叶变换(2D IFFT)。numpy.fft.fft2():计算二维输入数组的二维快速傅里叶变换(2D FFT)。numpy.fft.fft():计算一维输入序列的快速傅里叶变换(FFT)。在OpenCV中,cv.dft()函数和cv.idft()函数返回的结果都是与输入图像具有相同大小和类型的复数数组。原创 2023-07-07 14:33:50 · 217 阅读 · 1 评论 -
回型区图像处理2.0(opencv_python实战)
对上述的尝试三进行改进,由于轮廓已经非常清晰,而且可以消除外轮廓外一切干扰信息的影响,因此仅需解决上边缘熔断即可解决问题,为此,我们找到上边缘的两个顶点并进行连线,将内轮廓锁定在内部,并按大小排序挑出。但是这种情况下,内轮廓提取时仍然会受到草地图像的干扰,难以找到准确的内轮廓,进而影响总体的判断,因此我们还需要其他对策应对内轮廓的提取。为了使我的图像处理尽可能的适用于所有的回型坑位置在视野里的情况,无法利用外轮廓与内轮廓的相对位置来判断内轮廓具体是哪一个。原创 2023-07-13 11:24:43 · 218 阅读 · 0 评论 -
轮廓(opencv_python学习)
OpenCV中,找到轮廓就像从黑色背景中找到白色物体。因此请记住,要找到的对象应该是白色,背景应该是黑色。为了获得更高的准确性,请使用二进制图像。因此,在找到轮廓之前,请应用阈值或canny边缘检测。cv.findCountours()函数findContours()函数是OpenCV中用于查找图像中轮廓的函数。image:输入的二值图像。通常应该是灰度图像,并且要求前景为白色,背景为黑色。mode:轮廓检索模式。指定要查找轮廓的类型。原创 2023-07-07 12:09:54 · 913 阅读 · 1 评论 -
霍夫变换(opencv_python学习)
霍夫变换是一种常用的图像处理技术,用于检测图像中的直线、圆或其他形状。原创 2023-07-07 15:25:56 · 364 阅读 · 1 评论 -
模板匹配(opencv_python学习)
在OpenCV中,模板匹配是一种在图像中寻找指定模板的技术。它可以帮助我们在一幅图像中找到与给定模板最相似的区域。原创 2023-07-07 15:04:48 · 515 阅读 · 1 评论 -
形态学转换(opencv_python学习)
该函数的参数包括结构元素形状(如矩形cv.MORPH_RECT、椭圆形cv.MORPH_ELLIPSE和十字形cv.MORPH_CROSS)和结构元素尺寸。大小:结构元素的大小应该适合目标物体的尺度。试错法:在选择结构元素时,可以尝试不同形状和大小的结构元素,观察形态学操作的效果,并选择最佳的结构元素。需要注意的是,选择结构元素是一项艺术性的任务,取决于特定图像和形态学操作的要求。形状:根据图像中目标物体的形状,选择合适的结构元素形状。功能:通过计算图像的膨胀和侵蚀之间的差异,突出目标物体的边缘。原创 2023-07-06 22:02:19 · 106 阅读 · 1 评论 -
交互式前景提取使用GrabCut算法(opencv_python学习)
在调用 cv.grabCut() 函数之后,算法会根据给定的参数对图像进行分割,并更新掩膜的值。通常,前景像素被标记为 cv.GC_FGD 或 cv.GC_PR_FGD,背景像素被标记为 cv.GC_BGD 或 cv.GC_PR_BGD。cv.grabCut() 是 OpenCV 中用于执行 GrabCut 算法的函数。该函数可以将输入图像分割为前景和背景。其中,mask 是 cv.grabCut() 函数执行后得到的掩膜,mask2 是提取的前景区域的二值图像。原创 2023-07-07 22:17:46 · 406 阅读 · 1 评论 -
图像金字塔(opencv_python学习)
图像金字塔是一种用于处理图像的多尺度表示方法,可以在不同分辨率下对图像进行分析和处理。其中,高斯金字塔用于图像降采样(缩小),拉普拉斯金字塔用于图像重建。在OpenCV中,cv.pyrUp()和cv.pyrDown()函数用于实现图像金字塔的操作。原创 2023-07-07 03:20:20 · 465 阅读 · 1 评论 -
回型区图像处理(opencv实战)
原图如图所示,可以提取出中心的回型区域。使用前面的HSV提取小工具获得数据,修改后面代码中的值就可以获得比较好的效果。而且方便切换场景和光线效果时也能迅速调整。点击图片区域输出对应HSV值,退出程序时返回刚刚点击的HSV的范围(最大值最小值)原创 2023-07-10 20:08:28 · 150 阅读 · 1 评论 -
直方图理解(opencv_python学习)
直方图反投影是一种用于在图像中找到与给定直方图相似度最高的区域的技术。它通过比较测试图像的像素值与给定直方图的对应条目,并将相似度信息映射到输出图像中。它通过重新分配图像的像素值,使图像中的像素值更加均匀地分布在整个范围内,从而增强图像的细节和对比度。该函数接受图像数组、通道索引、掩码(可选)和直方图的参数(如直方图的大小和范围),并返回计算得到的直方图。例如,可以通过查看直方图的峰值来判断图像的主要颜色或亮度。它是在X轴上具有像素值(不总是从0到255的范围),在Y轴上具有图像中相应像素数的图。原创 2023-07-07 12:21:15 · 85 阅读 · 1 评论 -
Canny边缘检测(opencv_python学习)
高阈值用于初始的边缘选取,低阈值用于连接被高阈值选取的边缘上的弱边缘。该步骤会检查每个像素点周围的邻域,判断当前像素是否为沿着梯度方向的局部最大值,如果是,则保留该像素作为边缘点,否则将其抑制。这一步旨在捕捉图像中的边缘信息。通过计算梯度的幅值和方向,可以确定图像中的边缘位置和边缘的方向。Canny边缘检测是一种经典的边缘检测算法,它可以有效地检测图像中的边缘。边缘跟踪:根据双阈值处理后的结果,通过连接强边缘像素,形成完整的边缘线条。函数返回一个包含边缘信息的二值图像,其中白色表示边缘,黑色表示非边缘。原创 2023-07-07 02:54:43 · 214 阅读 · 2 评论 -
图像分割与Watershed算法(opencv_python学习)
用一种颜色(或强度)标记我们确定为前景或对象的区域,用另一种颜色标记我们确定为背景或非对象的区域,最后用 0 标记我们不确定的区域。函数的返回值 ret 表示总共有多少个连通区域,而 markers 是一个与原始图像大小相同的数组,记录了每个像素所属的连通区域的标签值。应用分水岭算法:通过将标记的图像作为输入,应用分水岭算法来进行最终的图像分割。确定种子点:根据预处理后的图像或特定的标记方式,确定种子点。然后,将 markers 数组中的所有元素加1,目的是将背景区域的标签设为0,前景区域从1开始标签。原创 2023-07-07 21:37:20 · 397 阅读 · 1 评论 -
图像梯度(opencv_python学习)
如果要检测两个边缘,更好的选择是将输出数据类型保留为更高的形式,例如 cv.CV_16S ,cv.CV_64F 等,取其绝对值,然后转换回 cv.CV_8U。cv.Scharr()函数与cv.Sobel()类似,也用于计算图像的梯度。在边缘检测过程中,通过设置dx=1,dy=0,可以获得图像中水平方向的边缘;cv.Sobel()函数用于计算图像的梯度,即在图像中计算像素点的导数。与Sobel算子相比,Scharr算子在计算梯度时的近似性能更好,因此在处理小物体和细节边缘时通常效果更好。原创 2023-07-07 02:29:03 · 245 阅读 · 1 评论