opencv学习日志27--芯片定位

前言

这篇文章中主要讲述opencv图像处理中芯片定位的应用。

一、芯片定位

//芯片定位
#include <opencv2/opencv.hpp>
#include <iostream>
using namespace cv;
using namespace std;
int main()
{
	cv::Mat dst;
	cv::Mat dstbin;
	cv::Mat dsttemp;
	cv::Mat resMat;
	cv::Mat Matstate;
	cv::Mat center;
	cv::Mat src = imread("C://Users//john//Desktop//1.jpg");
	cv::Mat srcgray = imread("C://Users//john//Desktop//1.jpg", 0);
	threshold(srcgray, dstbin, 100, 255, THRESH_OTSU);  //大津法
	cv::imshow("dstbin", dstbin);
	src.copyTo(dst);  
	//bitwise_not(dstbin, dsttemp);
	vector<vector<Point>> contours;

	vector<Vec4i> hirearchy;
	findContours(dstbin, contours, CV_RETR_LIST, CV_CHAIN_APPROX_NONE);
	int num = contours.size();

	//cout << num << endl;
	Point2f rect[4];
	for (int i = 0; i < num; i++)
	{
		
		RotatedRect rbox = minAreaRect(contours[i]);
		///cout << rbox << endl;
		int area = contourArea(contours[i]);//计算轮廓面积
		rbox.points(rect);  //把最小外接矩形四个端点复制给rect数组
		if (fabs(rbox.size.width * 1.0 / rbox.size.height - 1) < 0.2&&area>=100)
		{
			drawContours(dst, contours, i, Scalar(255, 0, 0), -1, 8);
			
		    for (int j = 0; j<4; j++)
			{
		         line(dst, rect[j], rect[(j + 1) % 4], Scalar(255, 255, 255), 2, 8);  //绘制最小外接矩形每条边
		    }
		}
		
	}

	cv::imshow("dsttemp", dstbin);
	cv::imshow("dst", dst);

	waitKey(0);
}

原图

在这里插入图片描述
效果图
在这里插入图片描述

总结

1.代码可以直接运行,如果有不懂得请留言哦。

前言: 开源的opencv真是一件伟大的产品,那么多个函数跟变量(具体多少还没数过)。要是结合起来综合运用几乎可以胜任任何有关图像识别和处理方面的工作。如果能更深入一点根据具体需要修改或优化里面的源码那更是如虎添翼。 花了点时间浏览了www.opencv.org.cn论坛里的所有贴子,还好不多才200多页。总体上对opencv里的一些常用函数功能作用大致有点了解,筛选一些跟元件识别有关的运用内容,但它论坛里的贴子回复的内容点到即止的居多。从网上下载了能搜到的教程跟代码全学习了解测试了一下,图像处理流程通常先开始都是要进行滤波,除燥,灰度,二值化后再轮廓识别等。 开始动手 经过多次好多次运行测试组合,终于有一次显示出意外的惊人效果,而且相当简单只是调用了几个函数而以,就可以有这样效果实在出人意料。第一个是进行元件中心点获取,也是直接调用函数再加点东西就可以得出元件的四个矩形顶点坐标,有这几个坐标就可以直接算出元件中间点所在的坐标了。如果要检测元件摆放角度是否是垂直90度,只要判断边宽的长度为最小或最大时就是垂直90度。 但这个矩形框无法测出元件具体角度。如截图: 测试视频地址:https://v.youku.com/v_show/id_XMjU5NzY5NTI0.html 不过,还有另外一个函数可以提供这个功能,调用后可以直接求出最小外接矩形和角度 如截图: 测试视频地址:https://v.youku.com/v_show/id_XMjYwMDMzMDc2.html 说明:里面的光源不行,临时用手电筒,和在光盘上插几个LED做环形灯做照明,无法做到无阴影显示。如果光源做的好,效果应该是非常精确稳定。 识别包含下面2种做法: opencv里需要的头文件跟库文件都已编译好放在和设置在当前程序目录下,就可不用安装opencv 也能直接编译。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

@白圭

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值