首页 > 其他分享 > Opencv技术应用

Opencv技术应用

时间:2023-05-04 20:33:48浏览次数:26  
标签:函数 img cv2 技术 Opencv 直方图 应用 图像 手势

 

OpenCV是一个开源的计算机视觉库,可以用于实现各种视觉任务,例如图像处理、物体识别、目标跟踪、人脸检测等。OpenCV具有丰富的图像处理和计算机视觉算法,例如边缘检测、滤波、形态学处理、特征提取和匹配等,可以帮助开发人员实现各种视觉任务,同时具有高效性、灵活性和易用性等优点。在本文中,我们将主要采取OpenCV读取数据及识别出人的手势。

首先,OpenCV 中可以使用imread函数将图像转换为向量,其用法如下:

# 读取图像

img = cv2.imread('image.jpg')

# 将图像转换为一维向量

vector = img.reshape((-1,))

 

在上述代码中,reshape 函数中的参数 (-1,) 表示将图像转换为一个一维行向量。变量 vector 即为转换后的向量。

其次,使用OpenCV创建手部直方图可以帮助我们将手势与背景进行分离。具体步骤如下:

1.读取视频或图像并将其转换为HSV格式。

2.创建一个与直方图相对应的掩膜。这可以通过使用cv2.inRange()函数创建一个二进制掩膜来实现。我们可以根据颜色阈值来筛选手的部分,以便后续操作。

3.计算手部直方图。这可以使用cv2.calcHist()函数来实现。我们可以在H通道上计算手的颜色直方图。

4.标准化直方图。我们可以使用cv2.normalize()函数来实现。这将确保直方图的值处于0到255之间。

5.应用掩膜。我们可以使用cv2.bitwise_and()函数将掩膜应用到原始图像上,以便只显示手的部分。

 代码如下:

def build_squares(img):

p,q,r,s = 420, 140, 10, 10

d = 10

imgCrop = None

   ....

return crop

def get_hand_hist():

cam = cv2.VideoCapture(1)

if cam.read()[0]==False:

cam = cv2.VideoCapture(0)

p,q,r,s = 300, 100, 300, 300

flagPressedC, flagPressedS = False, False

imgCrop = None

while True:

img = cam.read()[1]

img = cv2.flip(img, 1)

img = cv2.resize(img, (640, 480))

hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)

.....

with open("hist", "wb") as f:

pickle.dump(hist, f)

 

在上述代码中,build_squares()函数创建一个包含50个正方形的矩阵,每个正方形的大小为10x10像素。该函数还通过计算这些正方形的直方图来帮助将手势从背景中分离出来。具体来说,它遍历了这些正方形并将它们的像素存储在一个数组中,最终将这些数组连接起来形成一个完整的手势图像。get_hand_hist()函数使用摄像头捕捉图像,并根据用户的输入,生成手势直方图。在该函数中,用户首先需要将手放在一个300x300像素的框中,然后按下键盘上的“c”键以获取手势直方图。此后,程序将计算直方图并归一化。如果用户按下键盘上的“s”键,程序将退出循环并保存直方图。如果用户没有按下“s”键,程序将继续在图像中显示手势矩阵和手势直方图。程序还使用cv2.calcBackProject()函数将直方图投影到新图像中,并使用一些形态学转换和滤波操作来优化图像的质量。最后,它使用pickle库将直方图保存到名为“hist”的文件中。

标签:函数,img,cv2,技术,Opencv,直方图,应用,图像,手势
From: https://www.cnblogs.com/haosenstudio/p/17372412.html

相关文章

  • Exp6 MSF应用基础 20201331黄文刚
    Exp6MSF应用基础一、实验原理(1)MSF简介Metasploit是一个免费的、可下载的框架,通过它可以很容易地获取、开发并对计算机软件漏洞实施攻击。它本身附带数百个已知软件漏洞的专业级漏洞攻击工具。(2)程序特点这种可以扩展的模型将负载控制,编码器,无操作生成器和漏洞整合在一起,使M......
  • Exp6 MSF应用基础-20201324
    目录1实践内容1.0安装靶机1.1一个主动攻击实践,尽量使用最新的类似漏洞;主动攻击实践MS08-0671.2一个针对浏览器的攻击,尽量使用最新的类似漏洞;1.2.1针对浏览器的攻击ms06_013_createtextrange1.2.2针对浏览器的攻击MS14-0641.3一个针对客户端的攻击,如Adobe或office,尽量使用最......
  • .net 中使用OpenCvSharp 判断一张图片中是否包含指定图标
    1.添加包引用<ItemGroup><PackageReferenceInclude="OpenCvSharp4"Version="4.7.0.20230115"/><PackageReferenceInclude="OpenCvSharp4.Extensions"Version="4.7.0.20230115"/><PackageRef......
  • 点击×然后隐藏应用到托盘中
    electron关闭页面隐藏到托盘使用electron的Tray模块。该模块可以添加图标和上下文菜单到系统通知区。下面是主要代码:import{Menu,Tray}=require('electron');letwin;functioncreateMainWindow(){//运行根路径获取托盘图标constrootSrc=process.cwd();c......
  • 汽车雷达通往自动驾驶的关键技术
    公众号【调皮连续波】【正文】现代汽车雷达装置比手机还小,能探测前方、后方或侧方的盲点位置是否存在障碍物,但这还不百分之百实现全自动驾驶的。传统的汽车雷达分辨率都不高,只能“看到”一团东西,可以检测到汽车周围存在物体,如摩托车、卡车、行人,但无法确认目标到底是什么。我个人认......
  • 无人系统的环境感知技术 | 毫米波雷达技术(二)
    公众号【调皮连续波】,续接上文:无人系统的环境感知技术|毫米波雷达技术(一)【正文】OS-CFAR算法模型:参考单元根据大小对2L个x值进行排序,排序后的序列如下: 排序后,选择第m个样本  作为参考单元2L个数内的杂波背景。阈值    是在     。在一般情况下,m 可以取参考单元......
  • 书籍 | 自动驾驶汽车雷达技术
    公众号【调皮连续波】【正文】今天分享三本汽车雷达书籍,下载方式见文末。1、RadarforFullyAutonomousDriving(MattMarkel) 《全自动驾驶雷达》 2、RadarSignalProcessingAutonomousDriving《自动驾驶中的雷达信号处理》3、ModernRadarforAutomotiveApplications《......
  • 从4D到成像 | 4D毫米波雷达技术的发展
    公众号【调皮连续波】【正文】1.毫米波雷达的发展毫米波雷达从德国大陆集团在1999年研发的第一代雷达开始,到现在已经是第六代了,而且视野开阔且具备前瞻性的雷达企业也在布局第七代毫米波雷达的研发工作。二十多年来,毫米波雷达的发展主要在如下三个方面取得进步:(1)体积逐渐变小;(2)半导......
  • 4D毫米波雷达技术发展趋势分析
    公众号【调皮连续波】【正文】1、4D毫米波雷达产品特征及应用前景分析1.1 4D毫米波雷达的功能与特征4D毫米波雷达在3D毫米波雷达检测目标3D信息(雷达与目标的距离、相对径向速度、水平角度的数据)的基础上,增加对目标高度(垂直角度)的估计,相比于3D毫米波雷达具有天线数量多且密度高......
  • proxyempire的未来:技术发展和趋势分析
    在当今数字时代,随着我们越来越依赖互联网,安全和隐私的重要性变得越来越高。随着这一趋势的不断发展,proxyempire作为网络安全的解决方案也逐渐得到了广泛的应用。作为一种中间服务器,proxyempire能够在互联网上代表客户端访问目标服务器,从而保护客户端的隐私并且能够访问一些被封锁的......