Python+OpenCV实现图像特定区域宽度测量
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Python+OpenCV实现图像特定区域宽度测量,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2083字,纯文字阅读大概需要3分钟。
内容图文
![Python+OpenCV实现图像特定区域宽度测量](/upload/InfoBanner/zyjiaocheng/633/5cf55c5339ea41b1a27a4fcdb1522bae.jpg)
在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.运行结果
内容总结
以上是互联网集市为您收集整理的Python+OpenCV实现图像特定区域宽度测量全部内容,希望文章能够帮你解决Python+OpenCV实现图像特定区域宽度测量所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。