背景去除,OpenCV+C++?

怎么只保留雪糕棒,把背景去除,OpenCV+C++?

img

用代码块功能插入代码,请勿粘贴截图
运行结果及报错内容

只取轮廓面积足够大的那个连通域

我处理得到了下图这样的结果,思路就是转为HSV色域下,进行二值化处理,再形态学开运算。

img

源码如下:

import cv2
import numpy as np

src = cv2.imread("./1.png") #读取图片

hsv = cv2.cvtColor(src, cv2.COLOR_BGR2HSV) #转换到HSV色域
lower_thr = np.array([0, 0, 90]) #hsv三通道最低值
upper_thr = np.array([10, 10, 150]) ##hsv三通道最高值
res = cv2.inRange(hsv, lower_thr, upper_thr) #二值化:在两个阈值内的像素置为255,其余像素为0

kernel = np.ones((3, 3), np.uint8)
res = cv2.morphologyEx(res, cv2.MORPH_OPEN, kernel, anchor=(2, 0), iterations=2) #形态学开运算

cv2.imshow("show",res)
cv2.imwrite("res.jpg",res)
cv2.waitKey(0)