机器视觉作业--目标检测

1,硬币检测

 

#include <opencv2/opencv.hpp>
#include <algorithm>
#include <iostream>
using namespace std;
using namespace cv;
int main()
{

	Mat img = imread("D:\\C++\\coin.png", 0);
	if (img.empty())
	{
		cout << "Could not open or find the image!\n";
		return -1;
	}
	Mat coin2;
	threshold(img,coin2,86,255,THRESH_BINARY); 
	Mat connect_coin, stats, centroids;
	connect_coin = Mat::zeros(img.size(),CV_32S);
	int Num = connectedComponentsWithStats(coin2,connect_coin,stats,centroids,8,CV_32S);

	for (int i = 1; i < Num; i++)
	{
		cout << " connectedComponents NO." << i << endl;
		Rect bandbox;

		bandbox.x = stats.at<int>(i,0);
		bandbox.y = stats.at<int>(i, 1);
		bandbox.width = stats.at<int>(i, 2);
		bandbox.height = stats.at<int>(i, 3);

		rectangle(img,bandbox,Scalar(255,255,255),1,8,0);
		rectangle(coin2, bandbox, Scalar(255, 255, 255), 1, 8, 0);
	}
	imshow("img",img);
	imshow("coin2",coin2);
	waitKey(0);
	return 0;
} 

 效果:

 2,焊点检测

#include <opencv2/opencv.hpp>
#include <algorithm>
#include <iostream>
using namespace std;
using namespace cv;
int main()
{

	Mat img = imread("D:\\C++\\handian.jpg", 0);
	if (img.empty())
	{
		cout << "Could not open or find the image!\n";
		return -1;
	}
	img = 255 - img;
	Mat cut_two, cut_erode, cut_dilate, label, stats, centroids;
	threshold(img,cut_two,0,255,THRESH_OTSU);

	/
	Mat element = getStructuringElement(MORPH_RECT,Size(5,5));
	erode(cut_two,cut_erode,element,Point(-1,-1),2);
	dilate(cut_erode, cut_dilate, element, Point(-1, -1),2);

	int Num = connectedComponentsWithStats(cut_erode,label,stats,centroids,8,CV_32S);

	cout << "点的个数" << Num-1 << endl;

	imshow("cut_erode",cut_erode);
	imshow("cut_dilate",cut_dilate);
	waitKey(0);
	return 0;
}

 效果图:

3,回形针检测,计数

 

代码:实现原理很简单就是根据连通域的面积给的阈值 

#include <opencv2/opencv.hpp>
#include <algorithm>
#include <iostream>
using namespace std;
using namespace cv;
int main() 
{
	int Num=0;
	Mat src = imread("D:\\C++\\hui.png", 0);
	Mat src_gray,labels,stats,centroids;
	threshold(src,src_gray,0,255,THRESH_OTSU);
	src_gray = 255 - src_gray;
	imshow("src_gray",src_gray);
	connectedComponentsWithStats(src_gray,labels,stats,centroids,8,CV_32S);
	for (int i = 0; i < stats.rows; i++) 
	{
		if (stats.at<int>(i, 4) >= 4000 && stats.at<int>(i, 4) <= 8000)
		{
			Num = Num + 1;
			cv::Rect rect;
			rect.x = stats.at<int>(i, 0);
			rect.y = stats.at<int>(i, 1);
			rect.width = stats.at<int>(i, 2);
			rect.height = stats.at<int>(i, 3);
			rectangle(src_gray, rect, CV_RGB(255, 255, 255), 1, 8, 0);
		}
	}
	std::cout << "回形针个数:" << Num<< std::endl;
	imshow("src_gray", src_gray);
	waitKey(0);
}

 效果图:

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在深度学习迅速发展的今天,机器学习的应用变得越来越广泛。其中,人工智能视觉领域的应用越来越受到重视。而在人工智能视觉领域,车牌检测与识别系统应用广泛,也是一个非常重要的方向。因此,Python机器视觉实践课程设计作业--车牌检测与识别系统源码非常值得学习和探究。 本代码的实现主要分为三部分:车牌检测模块、车牌定位模块、以及车牌识别模块。首先,通过使用深度学习模型SSD检测算法,进行车牌的区域检测。接着,在检测到车牌区域后,使用车牌定位模块,对车牌进行定位,确保后续的识别操作可以准确的工作。最后,在完成车牌定位后,使用卷积神经网络模型CNN,对车牌进行图像解码和识别,获取车牌信息。 在本代码实现的过程中,除了SSD检测算法和CNN模型,还使用了一些辅助性的算法和模块。其中,二值化算法可以将车牌图片转换到黑白二值图像,能够有效的提高车牌的识别率。哈希算法可以有效的辨别车牌是否被重复检测。此外,还使用了OpenCV,PIL等图像处理相关的库,进行图像的预处理和后处理。 本代码实现了一个基本的车牌识别系统,在实践中发挥了非常重要的作用。 总之,Python机器视觉实践课程设计作业--车牌检测与识别系统源码的研究和学习,不仅可以让我们掌握深度学习图像处理的基本技术,也可以让我们更好的理解机器学习在实际生活应用中的作用和价值。如果你正在学习和探究人工智能视觉领域,这个源码是非常有价值的参考。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值