• Python+OpenCV实现图像特定区域宽度测量


    在Jupyter Notebook上使用Python+opencv实现如下图像特定区域宽度测量。关于opencv库的安装可以参考:Python下opencv库的安装过程与一些问题汇总

    1.实现代码

    import cv2
    import numpy
    from PIL import Image, ImageDraw, ImageFont
    
    #用于给图片添加中文字符
    def ImgText_CN(img, text, left, top, textColor=(0, 255, 0), textSize=20):
        if (isinstance(img, numpy.ndarray)):  #判断是否为OpenCV图片类型
            img = Image.fromarray(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
        draw = ImageDraw.Draw(img)
        fontText = ImageFont.truetype("font/simhei.ttf", textSize, encoding="utf-8")
        draw.text((left, top), text, textColor, font=fontText)
    return cv2.cvtColor(numpy.asarray(img), cv2.COLOR_RGB2BGR)
    
    #读取原图片
    image=cv2.imread("gongjian1.bmp")
    cv2.imshow("image", image)
    #截取目标区域
    rect=image[80:200, 120:205]#裁剪坐标为[y0:y1, x0:x1]
    #阈值分割
    ret,image1=cv2.threshold(rect, 80, 255, cv2.THRESH_BINARY_INV)
    cv2.imshow('image1', image1)
    #边缘提取
    image2 = cv2.Canny(rect,80,255) 
    cv2.imshow('image2', image2)
    #图像反色
    image3 = 255 - cv2.cvtColor(image2, cv2.COLOR_BGR2RGB)#将灰度图image2转换为RGB彩图后反色,转换为彩图是为了后面画有颜色的线
    cv2.imshow('image3', image3)
    image4 = 255 - cv2.cvtColor(image1, cv2.COLOR_RGB2GRAY)#将图像image1反色,黑色为背景,白色为目标,方便后面cv2.findContours()提取物体轮廓
    cv2.imshow('image4', image4)
    #提取物体轮廓
    contours, hierarchy = cv2.findContours(image4, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)#输入图像image4,轮廓检索方式cv2.RETR_EXTERNAL,轮廓近似方法cv2.CHAIN_APPROX_SIMPLE,返回轮廓contours和轮廓的层析结构hierarchy
    cnt = contours[0]
    x, y, w, h = cv2.boundingRect(cnt)#输入cnt,返回x,y,w,h:x,y是矩阵左上点的坐标,w,h是矩阵的宽和高
    # 绘制直线
    cv2.line(image3, (x, y), (x + w, y), (0,0,255), 2)#输入image3,在起始点(x, y)和终止点(x + w, y)之间画一条直线,红色,线条粗细为2
    cv2.line(image3, (x, y+h), (x + w, y+h), (0,0,255), 2)
    image[80:200, 120:205] = image3#在image上截取的部分替换为image3
    cv2.imshow("image5",image)
    image=ImgText_CN(image, '宽:'+str(w), 10, 20, textColor=(0, 255, 0), textSize=30)
    cv2.imshow("image6",image)
    cv2.waitKey(0)

    2.运行结果

     

     

     

     

     

     

  • 相关阅读:
    大数相乘
    分层打印二叉树
    sharepoint 编辑页面时应该注意的一些地方
    sharepoint2007在创建Web应用程序时的问题
    asp.net页面编码问题
    “ ”在IE和FF下显示不一致问题
    DataReader为数据源时的数据获取时的数据获取问题
    sharepoint个人视图修改问题
    母板页图片使用相对路径显示问题
    Web Part Templates for Microsoft Visual Studio .NET下载地址
  • 原文地址:https://www.cnblogs.com/BIXIABUMO/p/12881714.html
Copyright © 2020-2023  润新知