「已注销」 2023-02-06 09:25 采纳率: 100%
浏览 192
已结题

OpenCV-Python简单轮廓寻找

OpenCV-Python

img


图链接:https://pan.quark.cn/s/2b31ac50f685
第二个图

img


图链接:https://pan.quark.cn/s/4446377f1b85
寻找那个最明显的绿色轮廓

我的解答思路和尝试过的方法
import cv2

hgy = cv2.imread("C:/Users/cxryj/Pictures/hgy.png")
# cv2.imshow("hgy", hgy)
hgy_gray = cv2.cvtColor(hgy, cv2.COLOR_BGR2GRAY)
ret, binary = cv2.threshold(hgy_gray, 127, 255, cv2.THRESH_BINARY)
_, contours, hierarchy = cv2.findContours(binary, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)
hgy_copy = hgy.copy()
hgy_gray_copy = hgy_gray.copy()
cv2.drawContours(hgy_copy, contours, -1, (255, 0, 0), 3)
cv2.imwrite("C:/Users/cxryj/Pictures/res.png", hgy_copy)
cv2.waitKey(0)
cv2.destroyAllWindows()

img


这个我设置成找到的轮廓标记为蓝色,但是包含了一大堆轮廓

我想要达到的结果

各位老哥,如何使用OpenCV在Python下找出这个最大的绿色轮廓,是纯绿【BGR(0,255,0)】的,或者如果找不出来,我可以换这个轮廓的颜色,最好在现在这个颜色下能实现。
找到这个轮廓内的图像,然后去掉轮廓外面的部分,就处理轮廓以内的部分,这部分可以用掩膜操作解决。
感谢

  • 写回答

6条回答 默认 最新

  • youcans_ 人工智能领域优质创作者 2023-02-06 10:24
    关注
    
    import cv2
    
    # 加载图像
    img = cv2.imread("preview_png.png")
    
    # 提取 G 通道
    imgG = img.copy()  # BGR
    imgG[:, :, 0] = 0  # B=0
    imgG[:, :, 2] = 0  # R=0
    # cv2.imshow("Green channel", imgG)
    # cv2.waitKey(0)
    
    gray = cv2.cvtColor(imgG, cv2.COLOR_BGR2GRAY)
    # cv2.imshow("Gray image", gray)
    # cv2.waitKey(0)
    
    # 在二值图像中寻找轮廓
    ret, binary = cv2.threshold(gray, 85, 255, cv2.THRESH_BINARY)
    # cv2.imshow("binary", binary)
    # cv2.waitKey(0)
    
    # binary, contours, hierarchy = cv.findContours(binary, cv.RETR_TREE, cv.CHAIN_APPROX_SIMPLE)  # OpenCV3
    contours, hierarchy = cv2.findContours(binary, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)  # OpenCV4~
    
    cnts = sorted(contours, key=cv2.contourArea, reverse=True)  # 所有轮廓按面积排序
    cnt = cnts[0]  # 面积最大的轮廓
    imgCnt = img.copy()
    cv2.drawContours(imgCnt, cnts, 0, (0,0,255), 5)  # 绘制面积最大的轮廓
    
    cv2.imshow("contour", imgCnt)
    cv2.waitKey(0)
    

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)

报告相同问题?

问题事件

  • 系统已结题 2月14日
  • 已采纳回答 2月6日
  • 修改了问题 2月6日
  • 修改了问题 2月6日
  • 展开全部

悬赏问题

  • ¥15 preLaunchTask"C/C++: aarch64- apple-darwin22-g++-14 生成活动 文件”已终止,退出代码为-1。
  • ¥60 如何鉴定微信小程序数据被篡改过
  • ¥18 关于#贝叶斯概率#的问题:这篇文章中利用em算法求出了对数似然值作为概率表参数,然后进行概率表计算,这个概率表是怎样计算的呀
  • ¥20 C#上传XML格式数据
  • ¥15 elementui上传结合oss接口断点续传,现在只差停止上传和继续上传,各大精英看下
  • ¥100 单片机hardfaulr
  • ¥20 手机截图相片分辨率降低一半
  • ¥50 求一段sql语句,遇到小难题了,可以50米解决
  • ¥15 速求,对多种商品的购买力优化问题(用遗传算法、枚举法、粒子群算法、模拟退火算法等方法求解)
  • ¥100 速求!商品购买力最优化问题(用遗传算法求解,给出python代码)