opencv—常用函数学习_“干货“_7
创始人
2025-01-08 07:07:32
0

目录

十九、模板匹配

从图像中提取矩形区域的子像素精度补偿 (getRectSubPix)

在图像中搜索和匹配模板 (matchTemplate)

比较两个形状(轮廓)的相似度 (matchShapes)

解释

二十、图像矩

计算图像或轮廓的矩 (moments)

计算图像或轮廓的Hu不变矩 (HuMoments)

解释

使用示例

二一、查找表变换

使用查找表对图像进行变换 (LUT)

解释

实际应用

伽马校正的示例

http://t.csdnimg.cn/i8pqt —— opencv—常用函数学习_“干货“_总(VIP)

散的正在一部分一部分发,不需要VIP。

资料整理不易,有用话给个赞和收藏吧。


十九、模板匹配

        在OpenCV中,模板匹配是图像处理和计算机视觉中的一种重要技术,用于在大图像中找到与模板图像匹配的区域。下面介绍一些常用的模板匹配函数及其使用示例。

模板匹配函数
getRectSubPixmatchTemplatematchShapes
从图像中提取矩形区域的子像素精度补偿在图像中搜索和匹配模板比较两个形状(轮廓)的相似度

从图像中提取矩形区域的子像素精度补偿 (getRectSubPix)
import cv2 import numpy as np  # 读取图像 image = cv2.imread('path_to_image.jpg')  # 定义中心和大小 center = (50, 50) patch_size = (100, 100)  # 提取矩形区域 patch = cv2.getRectSubPix(image, patch_size, center)  cv2.imshow('Original Image', image) cv2.imshow('Extracted Patch', patch) cv2.waitKey(0) cv2.destroyAllWindows() 
在图像中搜索和匹配模板 (matchTemplate)
# 读取图像和模板 image = cv2.imread('path_to_image.jpg', 0) template = cv2.imread('path_to_template.jpg', 0)  # 进行模板匹配 result = cv2.matchTemplate(image, template, cv2.TM_CCOEFF_NORMED)  # 获取最佳匹配位置 min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(result)  # 绘制匹配结果 top_left = max_loc h, w = template.shape bottom_right = (top_left[0] + w, top_left[1] + h) cv2.rectangle(image, top_left, bottom_right, 255, 2)  cv2.imshow('Template Matched', image) cv2.waitKey(0) cv2.destroyAllWindows() 
比较两个形状(轮廓)的相似度 (matchShapes)
# 读取图像并转换为灰度图 image1 = cv2.imread('path_to_image1.jpg', 0) image2 = cv2.imread('path_to_image2.jpg', 0)  # 阈值化 _, binary1 = cv2.threshold(image1, 127, 255, cv2.THRESH_BINARY) _, binary2 = cv2.threshold(image2, 127, 255, cv2.THRESH_BINARY)  # 提取轮廓 contours1, _ = cv2.findContours(binary1, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) contours2, _ = cv2.findContours(binary2, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)  # 计算相似度 if contours1 and contours2:     similarity = cv2.matchShapes(contours1[0], contours2[0], cv2.CONTOURS_MATCH_I1, 0.0)     print(f'Shape similarity: {similarity}') 

解释

  • getRectSubPix:从图像中提取矩形区域的子像素精度补偿,适用于需要高精度提取的场景。
  • matchTemplate:在大图像中搜索和匹配模板,返回一个相似度图,可以进一步处理以找到最佳匹配位置。
  • matchShapes:比较两个形状(轮廓)的相似度,返回一个相似度值,值越小表示形状越相似。

这些示例展示了如何使用OpenCV中的各种模板匹配函数来处理图像。根据具体的应用需求,可以灵活运用这些函数来实现复杂的模板匹配任务。

二十、图像矩

        在OpenCV中,图像矩是图像的一个重要特征,用于描述图像的形状和分布。常用的图像矩函数包括 momentsHuMoments。下面介绍这些函数及其使用示例。

图像矩函数
momentsHuMoments
计算图像或轮廓的矩计算图像或轮廓的Hu不变矩
计算图像或轮廓的矩 (moments)
import cv2 import numpy as np  # 读取图像并转换为灰度图 image = cv2.imread('path_to_image.jpg', cv2.IMREAD_GRAYSCALE)  # 应用阈值处理 _, binary_image = cv2.threshold(image, 127, 255, cv2.THRESH_BINARY)  # 计算轮廓 contours, _ = cv2.findContours(binary_image, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)  # 计算第一个轮廓的矩 if contours:     moments = cv2.moments(contours[0])     print("Moments:", moments) 
计算图像或轮廓的Hu不变矩 (HuMoments)
# 计算第一个轮廓的矩 if contours:     moments = cv2.moments(contours[0])      # 计算Hu不变矩     hu_moments = cv2.HuMoments(moments).flatten()     print("Hu Moments:", hu_moments) 

解释

  • moments:计算图像或轮廓的矩,返回一个包含多种矩(如零阶矩、一阶矩、二阶矩等)的字典。这些矩可以用来计算图像的质心、面积、惯性矩等。
  • HuMoments:根据普通矩计算Hu不变矩,返回7个不变矩。这些不变矩对图像的缩放、旋转和镜像变换保持不变,是一种强有力的形状特征。

使用示例

        下面是一个综合的示例,展示了如何使用momentsHuMoments来计算图像或轮廓的矩和不变矩。

import cv2 import numpy as np  # 读取图像并转换为灰度图 image = cv2.imread('path_to_image.jpg', cv2.IMREAD_GRAYSCALE)  # 应用阈值处理 _, binary_image = cv2.threshold(image, 127, 255, cv2.THRESH_BINARY)  # 计算轮廓 contours, _ = cv2.findContours(binary_image, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)  # 计算第一个轮廓的矩和Hu不变矩 if contours:     contour = contours[0]          # 计算矩     moments = cv2.moments(contour)     print("Moments:", moments)          # 计算质心     cX = int(moments["m10"] / moments["m00"])     cY = int(moments["m01"] / moments["m00"])     print("Centroid:", (cX, cY))          # 计算Hu不变矩     hu_moments = cv2.HuMoments(moments).flatten()     print("Hu Moments:", hu_moments)          # 在图像上绘制轮廓和质心     image_color = cv2.cvtColor(image, cv2.COLOR_GRAY2BGR)     cv2.drawContours(image_color, [contour], -1, (0, 255, 0), 2)     cv2.circle(image_color, (cX, cY), 5, (0, 0, 255), -1)     cv2.imshow("Contour with Centroid", image_color)     cv2.waitKey(0)     cv2.destroyAllWindows() 

        这些示例展示了如何使用OpenCV中的图像矩函数来处理图像,根据具体的应用需求,可以灵活运用这些函数来实现复杂的图像特征提取和分析任务。

二一、查找表变换

        在OpenCV中,查找表(LUT,Look-Up Table)变换是一种高效的像素值映射方法,用于对图像进行各种非线性变换。通过预先定义一个查找表,可以快速地将输入图像的像素值转换为输出图像的像素值。OpenCV提供了LUT函数来实现这一功能。

查找表变换函数
LUT使用查找表对图像进行变换

使用查找表对图像进行变换 (LUT)
import cv2 import numpy as np  # 读取图像 image = cv2.imread('path_to_image.jpg', cv2.IMREAD_GRAYSCALE)  # 定义一个查找表,将像素值变换为其平方根的结果 lut = np.array([np.sqrt(i) * 16 for i in range(256)], dtype=np.uint8)  # 应用查找表变换 result_image = cv2.LUT(image, lut)  # 显示原图像和变换后的图像 cv2.imshow('Original Image', image) cv2.imshow('LUT Transformed Image', result_image) cv2.waitKey(0) cv2.destroyAllWindows() 

解释

  • 定义查找表:在这个示例中,我们定义了一个查找表lut,将每个像素值映射到其平方根乘以16的值。np.sqrt(i) * 16用于计算像素值的平方根并放大以增加对比度。
  • 应用查找表变换:使用cv2.LUT函数将查找表应用于图像。这将图像中的每个像素值替换为查找表中对应的值。

实际应用

        查找表变换在图像处理中的应用非常广泛,常用于以下场景:

  1. 伽马校正:调整图像的亮度和对比度。
  2. 颜色映射:将灰度图像映射到伪彩色图像。
  3. 非线性增强:对图像进行对数变换、指数变换等非线性增强。
伽马校正的示例
# 伽马校正的查找表 gamma = 2.2 lut = np.array([((i / 255.0) ** gamma) * 255 for i in range(256)], dtype=np.uint8)  # 应用查找表变换 gamma_corrected_image = cv2.LUT(image, lut)  # 显示伽马校正后的图像 cv2.imshow('Gamma Corrected Image', gamma_corrected_image) cv2.waitKey(0) cv2.destroyAllWindows() 

        在这个示例中,我们定义了一个用于伽马校正的查找表lut,并将其应用于图像以实现伽马校正效果。

        通过这些示例,可以看到如何使用OpenCV中的LUT函数来实现各种查找表变换。根据具体的应用需求,可以灵活定义查找表并应用于图像处理任务。

相关内容

热门资讯

透视科技!闲来游戏辅助器脚本,... 透视科技!闲来游戏辅助器脚本,哈糖大菠萝开挂(透视)开挂辅助安装2026新版技巧;无需打开直接搜索加...
实测辅助!wepoker怎么增... 您好:赣牌圈挂安装图解这款游戏可以开挂的,确实是有挂的,很多玩家在这款游戏中打牌都会发现很多用户的牌...
指引辅助"微信老铁1... 大家好,今天小编来为大家解答微信老铁13水辅助这个问题咨询软件客服可以免费测试直接加微信(13670...
第九分钟开挂"约战丹... 第九分钟开挂"约战丹东辅助"原先有开挂辅助透视器(有挂秘笈) 【无需打开直接搜索加薇13670430...
透视中牌率!微乐河南麻将辅助i... 透视中牌率!微乐河南麻将辅助ios,新卡农辅助(透视)开挂辅助安装技巧教程;无需打开直接搜索薇:13...
法子开挂"微信开心是... 大家好,今天小编来为大家解答微信开心是按照辅助脚本这个问题咨询软件客服可以免费测试直接加微信(136...
关于辅助!线上德州的辅助器是什... 关于辅助!线上德州的辅助器是什么,浙江游戏大厅脚本软件,开挂(透视)辅助下载(有挂功能);打开点击测...
一分钟开挂"青龙辅助... 一分钟开挂"青龙辅助3.0"从前有开挂辅助透视脚本(有挂神器)【无需打开直接搜索加薇13670430...
技法辅助"好友赣南插... 技法辅助"好友赣南插件"开挂(安装)辅助插件(真实有挂)《详细加薇136704302咨询》游戏特色:...
透视透视!欢聚水鱼辅助插件,樱... 樱花之盛辅助真的假的是一款可以让一直输的玩家,快速成为一个“必胜”的ai辅助神器,有需要的用户可以加...