利用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.at<Vec3b>(
  • 2
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
要使用OpenCV识别有多个水果图像,您可以使用以下步骤: 1. 加载图像并将其转换为灰度图像。 2. 对图像进行模糊处理以消除噪声。 3. 应用阈值处理以将图像转换为二进制图像。 4. 根据二进制图像找到所有水果的轮廓。 5. 对每个轮廓进行形状匹配和颜色检测以确定水果类型。 6. 在原始图像用不同颜色的矩形框标记每个检测到的水果。 以下是一个简单的示例代码,可以帮助您入门: ```python import cv2 # 加载图像并将其转换为灰度图像 img = cv2.imread('fruit_image.jpg') gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) # 对图像进行模糊处理以消除噪声 blur = cv2.GaussianBlur(gray, (5, 5), 0) # 应用阈值处理以将图像转换为二进制图像 ret, thresh = cv2.threshold(blur, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU) # 根据二进制图像找到所有水果的轮廓 contours, hierarchy = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE) # 对每个轮廓进行形状匹配和颜色检测以确定水果类型 for cnt in contours: area = cv2.contourArea(cnt) if area > 1000: # 只处理面积大于1000的轮廓 rect = cv2.minAreaRect(cnt) box = cv2.boxPoints(rect) box = np.int0(box) # 在原始图像用不同颜色的矩形框标记每个检测到的水果 cv2.drawContours(img, [box], 0, (0, 0, 255), 2) cv2.imshow('Fruit Detection', img) cv2.waitKey(0) cv2.destroyAllWindows() ``` 请注意,此示例代码仅用于演示目的,并且可能需要您进行调整以适应您的特定应用程序。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

徽州SLAM李

如果觉得不错,打赏一下哦,嘻

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

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

打赏作者

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

抵扣说明:

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

余额充值