• Opencv实战日记01


    /*

    @author:Isadora

    @time:2021/7/17

    */

    轮廓检测01:使用numpy生成图像

     1 import cv2
     2 import numpy as np
     3 
     4 #生成200*200的黑色空白图像
     5 img = np.zeros((200,200), dtype=np.uint8)
     6 img[50:150, 50:150] = 255
     7 
     8 #阈值分割
     9 ret, thresh = cv2.threshold(img, 127, 255, 0)
    10 
    11 #寻找轮廓函数
    12 contours, hierarchy = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
    13 
    14 #颜色空间转换
    15 color = cv2.cvtColor(img, cv2.COLOR_GRAY2BGR)
    16 
    17 #绘制轮廓
    18 img = cv2.drawContours(color, contours, -1, (0,255,0), 2)
    19 cv2.imshow("contours", color)
    20 cv2.waitKey()
    21 cv2.destroyAllWindows()

     原图:

    效果图:

    轮廓检测2:输入图像

     1 import cv2
     2 import numpy as np
     3 
     4 #生成200*200的黑色图像
     5 # img = np.zeros((200,200), dtype=np.uint8)
     6 # img[50:150, 50:150] = 255
     7 #获取图像
     8 img = cv2.imread("C:/Users/15212/Desktop/python/example_shapes.png")
     9 gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    10 
    11 #阈值分割
    12 ret, thresh = cv2.threshold(gray, 127, 255, 0)
    13 
    14 #寻找轮廓函数
    15 contours, hierarchy = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
    16 
    17 #颜色空间转换
    18 # color = cv2.cvtColor(img, cv2.COLOR_GRAY2BGR)
    19 
    20 #绘制轮廓
    21 image = cv2.drawContours(img, contours, -1, (0,255,0), 2)
    22 cv2.namedWindow("contours",cv2.WINDOW_NORMAL)
    23 cv2.imshow("contours", image)
    24 cv2.waitKey()
    25 cv2.destroyAllWindows()

    效果图:

    总结1与2的区别:

    1的处理步骤:

    生成图像→阈值分割→寻找轮廓函数→颜色空间转换→绘制轮廓

    2的处理步骤:

    获取图像→颜色空间转换→阈值分割→寻找轮廓→绘制轮廓

  • 相关阅读:
    POJ2182Lost Cows
    BZOJ4003: [JLOI2015]城池攻占
    POJ1635Subway tree systems
    BZOJ1005: [HNOI2008]明明的烦恼
    POJ1182 NOI2001 食物链
    栈的链式实现
    栈的数组实现
    链表ADT的实现
    #ifndef的用法
    using namespace std
  • 原文地址:https://www.cnblogs.com/isadoraytwwt/p/15022417.html
Copyright © 2020-2023  润新知