利用OpenCV检测图像中的多个水果

OpenCV检测图像中的多个水果


最近面试碰到一个图像算法题,要求:
(1)检测一副图像中的多个苹果并标识出来。
(2)标识时需要将图像中苹果按照从大到小给定序号,显示出来。
基于以上两点,准备利用C++进行编写代码的同时,利用OpenCV进行相关操作,在此记录一下。

先附上部分效果图:

1 思路
对于图像本身而言,因为苹果是红色的,基于这一特性,想法自然是先按照颜色进行分类,然后提取图像中的红色区域了,然后对图像进行检测和标识。

step1:滤波

	Mat img = imread("D:/VSprojection/detect_apple/detect_apple/1.jpeg", cv::IMREAD_COLOR);//用来输出
	//step1:BGR->HSV
	Mat src_HSV;
	cvtColor(src, src_HSV, COLOR_BGR2HSV);
	//imshow("source_image", src);
	medianBlur(src_HSV, src_HSV, 5);

step2:提取红色区域

//step2:提取苹果
	int imgrow = src.rows;
	int imgcol = src.cols;
	for (int m = 0; m < imgrow; m++)
	{
   
		for (int n = 0; n < imgcol; n++)
		{
   
			//提取红色区域
			if (!((((src_HSV.at<Vec3b>(m, n)[0] >= 0) && (src_HSV.at<Vec3b>(m, n)[0] <= 15)) ||
				(src_HSV.at<Vec3b>(m, n)[0] >= 125) && (src_HSV.at<Vec3b>(m, n)[0] <= 180)) && 	(src_HSV

文章出处登录后可见!

已经登录?立即刷新

共计人评分,平均

到目前为止还没有投票!成为第一位评论此文章。

(0)
青葱年少的头像青葱年少普通用户
上一篇 2023年11月27日
下一篇 2023年11月27日

相关推荐