首页 > 其他分享 >基于OpenCV视觉库让机械手根据视觉判断物体有无和分类抓取的例程

基于OpenCV视觉库让机械手根据视觉判断物体有无和分类抓取的例程

时间:2024-11-27 15:32:24浏览次数:10  
标签:createTrackbar 颜色 name 例程 物件 OpenCV window 视觉 255

项目实例,在一个无人封闭的隔绝场景中,根据视觉判断物件的有无,通过机械手
进行物件分类提取,并且返回状态结果;
实际的场景是有一个类似采血的固件支架盘,上面很多采血管,采血管帽颜色可能不同,
也有可能支架盘上只有空位,没有放置采血管,需要机器操作。

图像的大小,支架和物件的位置、大小等等都基本保存一致不会经常的变化。


开始的思路是通过判断空位上的圆来做排除,遇到了局限性,比如光照不好的情况下,空位
并非是正常的圆,可能是缺的圆,而且因为视角的缘故,根本没法判断是圆了,于是只好放弃;

后来就进行二值化后判断多个圆,如果有多个圆的那应该是有物件的,二值化后显然无法
根据颜色来判断不同的提取对象,也是不行的;

最后还是觉得通过颜色来判断比较合理,因为不仅仅要获取物件的有无,还要判断物件的分类,
而且物件的大概位置不能错,因为要知道对应的位置上是否有插物件。

设计思路:
使用 HSV颜色模型来做。

HSV(Hue, Saturation, Value)是根据颜色的直观特性由A. R. Smith在1978年创建的一种颜色空间, 
也称六角锥体模型(Hexcone Model)。
HSV颜色模型是指H、S、V三维颜色空间中的一个可见光子集,它包含某个颜色域的所有颜色。

每一种颜色都是由色相(Hue,简H),饱和度(Saturation,简S)和色明度(Value,简V)所表示的。
这个模型中颜色的参数分别是:色调(H),饱和度(S),亮度(V)。

色调H参数表示色彩信息,即所处的光谱颜色的位置。该参数用一角度量来表示,取值范围为0°~360°。
若从红色开始按逆时针方向计算,红色为0°,绿色为120°,蓝色为240°。
它们的补色是:黄色为60°,青色为180°,紫色为300°;

饱和度S:取值范围为0.0~1.0;
亮度V:取值范围为0.0(黑色)~1.0(白色)。

调试判断过程如下:

橘红色物件

黄色物件

相关代码如下


void CMFCCVMDlg::OnBnClickedBtnOpen()
{
	char* window_name = "testCELL";
	//resizeWindow(window_name, 480, 320);

	BOOL isOpen = TRUE;		    //是否打开(否则为保存)
	CString defaultDir = "";	//默认打开的文件路径
	CString fileName = "";		//默认打开的文件名
	CString filter = "图像文件 (*.png; *.jpg; *.bmp)|*.png;*.jpg;*.bmp||";	//文件过虑的类型
	CFileDialog openFileDlg(isOpen, defaultDir, fileName, OFN_HIDEREADONLY | OFN_READONLY, filter, NULL);
	openFileDlg.GetOFN().lpstrInitialDir = "";
	INT_PTR result = openFileDlg.DoModal();
	CString filePath = "";
	if (result != IDOK) 
	{
		//filePath = openFileDlg.GetPathName();
		return;
	}
	filePath = openFileDlg.GetPathName();
	Mat imgOriginal = imread(filePath.GetBuffer());

	namedWindow("imgOriginal", 0);
	imshow("imgOriginal", imgOriginal);

	int iLowH = 0, iLowS = 0, iLowV = 0;
	int iHighH = 180, iHighS = 255, iHighV = 255;

	Mat imgHSV, imgThresholded;
	//vector<Mat> hsvSplit;
	cvtColor(imgOriginal, imgHSV, COLOR_BGR2HSV); //Convert the captured frame from BGR to HSV
	//split(imgHSV, hsvSplit);

	namedWindow(window_name, 0);
	// 创建跟踪条并将其附着到指定窗口。
	createTrackbar("iLowH:", window_name, &iLowH, 180); //no name cann't use this
	createTrackbar("iHighH:", window_name, &iHighH, 180);

	createTrackbar("iLowS:", window_name, &iLowS, 255);
	createTrackbar("iHighS:", window_name, &iHighS, 255);

	createTrackbar("iLowV:", window_name, &iLowV, 255);
	createTrackbar("iHighV:", window_name, &iHighV, 255);

	while (true)
	{
		// 检查数组元素是否位于其他两个数组的元素之间。
		inRange(imgHSV, Scalar(iLowH, iLowS, iLowV), Scalar(iHighH, iHighS, iHighV), imgThresholded);
		//src.copyTo(dst, detected_edges);
		imshow(window_name, imgThresholded);
		char key = (char)waitKey(30);
		if (key == 27)
			break;
	}
}

最后做下亮块大小判断即可获得是否有物件,和对应位置,以及是什么颜色的物件。

标签:createTrackbar,颜色,name,例程,物件,OpenCV,window,视觉,255
From: https://blog.csdn.net/ljygood2/article/details/144084789

相关文章

  • C/C++ openCV实现实时课室管理系统
    该系统能实时展示教室的使用状态,它通过分析摄像头传回的视频信息来判断教室中是否有课程正在进行,并将这些信息即时更新到教学楼大厅的显示屏上。由于各种不可预见的原因,预先制定的课程表可能无法准确反映教室的实际使用情况,因此这个实时系统提供了更加准确的参考。核心功能:(1)......
  • OpenCV 模板匹配全解析:从单模板到多模板的实战指南
    简介:本文深入探讨OpenCV中的模板匹配技术。详细介绍构建输入图像与模板图像的步骤,包括读取、截取、滤波与存储等操作。剖析cv2.matchTemplate语法及其参数含义,阐述不同匹配方法下结果值的意义。同时讲解cv2.minMaxLoc语法,并通过代码示例展示单模板匹配查找最小值与最......
  • OpenCV从入门到精通实战(七)——探索图像处理:自定义滤波与OpenCV卷积核
    本文主要介绍如何使用Python和OpenCV库通过卷积操作来应用不同的图像滤波效果。主要分为几个步骤:图像的读取与处理、自定义卷积函数的实现、不同卷积核的应用,以及结果的展示。卷积在图像处理中,卷积是一种重要的操作,它通过将图像与一个小的矩阵(称为卷积核或滤波器)进行运算......
  • VisionPro 机器视觉案例 之 凹点检测
    第十六篇机器视觉案例之凹点检测文章目录第十六篇机器视觉案例之凹点检测1.案例要求2.实现思路2.1方式一:斑点工具加画线工具加点线距离工具2.2方法二使用斑点工具的结果集边缘坐标的横坐标最大值ImageBoundMaxX2.3方法三使用斑点工具的结果集凹点结果集Conv......
  • 自动驾驶之心全套首个基于Transformer的分割检测 视觉大模型视频课程
    网课学习的好处有哪些1、学生学习自主性强:资料地址https://pan.baidu.com/s/1GIsMJ9BGgjgbJCrsVNDi6A?pwd=2q49当学生在面对电脑时,会有一种自己未来掌握在自己手中的感觉,所有的操作完全由自己掌控,真正发挥学习的主观能动性。2、学生非限性学习:网络学习的学生不受年龄的限制,同......
  • w~视觉~合集25
    我自己的原文哦~  https://blog.51cto.com/whaosoft/12627822#MeanShift简单的介绍 MeanShift的数学原理和代码实现,基于均值漂移法MeanShift的图像分割MeanShift算法简介从分割到聚类对于图像分割算法,一个视角就是将图像中的某些点集分为一类(前景),另外一些点集......
  • 机器视觉软件有哪些?
    机器视觉被称为“工业之眼”,底层逻辑是利用机器代替人工,对物体进行识别、测量,并做出判断。硬件负责成像,相当于人的“眼睛”,包括光源及光源控制器、镜头和工业相机;软件负责图像处理分析,相当于“大脑的视觉皮层”,二者一起构成机器视觉产业链的上游,是体现竞争力的关键环节‌。全......
  • 三、计算机视觉_08YOLO目标检测
    0、前言YOLO作为目前CV领域的扛把子,分类、检测等任务样样精通,本文将基于两个小案例,用YOLO做检测任务,看看效果如何1、对图片内容做检测假设我有一张名为picture.jpeg的图片,其内容如下我将图片和代码放到了同级目录代码如下:fromultralyticsimportYOLOimportcv2impor......
  • 【计算机视觉+MATLAB】自动检测并可视化圆形目标:通过 imfindcircles 和 viscircles 函
    引言自动检测图像中的圆形或圆形对象,并可视化检测到的圆形。函数详解imfindcirclesimfindcircles是MATLAB中的一个函数,用于在图像中检测并找出圆形区域。基本语法:[centers,radii]=imfindcircles(A,radiusRange)[centers,radii,metric]=imfindcircles(A,rad......
  • 【触想智能】工业一体机在工业机器视觉领域应用的特点与注意事项
    随着工业化的进程和技术的不断发展,工业机器视觉成为现代工业生产中不可或缺的一部分。作为工业机器视觉技术的核心组件之一,工业一体机因其便携、集成度高和易于操作的特点,在工业机器视觉应用中得到广泛应用。触想工业一体机TPC-W500系列一、工业一体机在工业机器视......