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

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 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 牛顿斯科特系数表表示