sorona是什么面料| 东北属于什么气候| 打呼噜是什么原因| 春是什么生肖| 尿路感染吃什么药效果最好| 扁平疣是什么原因长出来的| 滑精是什么原因| 分家是什么意思| toshiba是什么牌子| 小心地什么| 大力是什么药| 走马灯是什么意思| 梦到开车是什么意思| 什么时候抓知了猴| 国企是什么意思| 微创人流和无痛人流有什么区别| 石墨烯属于什么材料| xg是什么意思| hmo是什么意思| 免冠彩照是什么意思| 女性分泌物像豆腐渣用什么药| 姜汁洗头发有什么好处| 男生说gg是什么意思| 1991年是什么年| 验大便能查出什么| 闭合性骨折是什么意思| 返流性食管炎用什么药| 老子叫什么| 急性肠胃炎打什么点滴| 蛇吃什么| 中国第一长河是什么河| 悲智双运什么意思| 感染幽门螺旋杆菌会出现什么症状| min是什么| 常吃生花生有什么好处| 挂失补办身份证需要什么| 埋线有什么好处和坏处| 日字五行属什么| 吃什么能升血压| 7月18日什么星座| 欢是什么动物| 山茶花什么时候开| 娇羞是什么意思| 什么的蚂蚁| 羊水破了是什么感觉| 双非是什么| 淋巴结肿大看什么科室最好| 玉米除草剂什么时候打最好| 笄礼是什么意思| 洁面膏和洗面奶有什么区别| 了了什么意思| 宋美龄为什么没有孩子| 尿酸高饮食要注意什么| 脑部磁共振检查什么| 什么是抗凝药物| 朝鲜钱币叫什么| 钧字五行属什么| 圈层是什么意思| plv是什么意思| 71年出生属什么生肖| ch表示什么意思| 中国国鸟是什么| 为什么回族不吃猪肉| 梦见烙饼是什么意思| 孕晚期吃什么好| 吃什么代谢快| 胎儿双侧肾盂无分离是什么意思| 好人是什么意思| 什么是世界观| 喝黄瓜汁有什么好处| 吃生葵花籽有什么好处和坏处吗| 蛟龙是什么意思| 头发油是什么原因| 缠足是什么时候开始的| 磷高有什么症状和危害| 栀子花叶子发黄是什么原因| 4月24号是什么星座| 木须是什么| 石敢当是什么神仙| 咖啡soe是什么意思| 扬字五行属什么| 双侧基底节区腔隙灶是什么意思| 晚上尿床是什么原因| 额头上长痘是因为什么| 牛蛋是什么| 什么知什么明| 什么牌子的洗发水好| 眼压高是什么原因引起的| nicu是什么意思| 羊球是什么| 火焰山为什么这么热| 血淀粉酶是查什么的| 胃肠造影主要检查什么| 病是什么结构| spiderking是什么牌子| 血管瘤是什么样子图片| 米放什么不生虫子| 脾的作用是什么| 行驶证和驾驶证有什么区别| 乐字属于五行属什么| 半成品是什么意思| 男人经常熬夜喝什么汤| 欲仙欲死是什么意思| n1是什么意思| 但愿是什么意思| 璟字五行属什么| geforce是什么牌子| lauren是什么意思| 什么情况下需要切除子宫| 818是什么星座| 乳腺结节3类什么意思| 女人为什么会患得患失| 8月8日是什么星座| 为什么会得灰指甲| ushi是什么品牌男装| 19时是什么时辰| 什么是马赛克| 瓜怂是什么意思| 白带是黄色是什么原因| 牙龈老是出血是什么原因引起的| 话费为什么扣那么快| 2月23号是什么星座| 玺什么意思| chanel是什么牌子| 办独生子女证需要什么材料| 什么是礼仪| bmo是什么意思| 额头反复长痘是什么原因| 粉色裤子配什么上衣好看| 美女是什么意思| 纪梵希为什么不娶赫本| 羊鞭是什么部位| 什么血压计最准确| 异国他乡的意思是什么| 冠心病用什么药| 得艾滋病有什么症状| 不复相见什么意思| 江苏有什么烟| 讣告是什么意思| 阴险是什么意思| 为什么射出的精子里有淡红色| 动脉血是什么颜色| 靠北是什么意思| 荔枝有什么好处| 早上八点半是什么时辰| 吃什么不便秘可以通便| 蝴蝶吃什么食物| 女同是什么意思| 什么颜色加什么颜色等于灰色| 整个后背疼是什么原因| 普外科是什么科| 交杯酒是什么意思| 尿中红细胞高是什么原因| 腈纶是什么面料优缺点| 伊拉克是什么人种| 2100年是什么年| g6pd是什么| b3维生素又叫什么| 莫名其妙什么意思| 钟表挂在客厅什么位置好| 男孩适合学什么专业| 脸色发黄是什么原因| 鸟进屋有什么预兆| 沈阳有什么特产| 买车置换是什么意思| 动态心电图能检查出什么病| 牙龈肿痛发炎吃什么药| 性格内敛是什么意思| 癸水的根是什么| 什么是双飞| 麂皮是什么材质| 甲状腺结节有什么感觉| 脑电图异常是什么病| 被蚂蚁咬了怎么止痒消肿要擦什么药| 安吉白茶属于什么茶| 上海有什么景点| rhubarb是什么意思| 肌膜炎是什么原因造成的| 复印病历需要什么证件| 水由什么构成| 患难见真情的上一句是什么| 94年属于什么生肖| 把妹是什么意思| 梦到蜈蚣是什么意思| 治疗心率过快用什么药效果好| 尿酸高是什么病| 蜂王浆有什么好处| 抖腿是什么毛病| 腿上长水泡是什么原因引起的| 罗汉局是什么意思| 梦见捡到钱是什么预兆| 肉苁蓉有什么功效| 怀孕哭对宝宝有什么影响| 什么的天空填合适的词| 回心转意是什么意思| 掉头发什么原因| 迪奥口红属于什么档次| 8月14日是什么星座| 虫草适合什么人吃| 梦见红棺材是什么征兆| 跳蚤的天敌是什么| 避孕环是什么样子图片| 大白条是什么鱼| 行尸走肉什么意思| 脖子发麻是什么原因| 甲状腺球蛋白抗体高说明什么| 产后恶露吃什么排干净| 老年人流鼻血是什么原因| 硕的拼音是什么| 冰箱什么牌子好| 左腰疼是什么原因| 吃什么补脾虚| 吃人嘴短拿人手软什么意思| 什么矿泉水最好| 吃避孕药有什么危害| 心脏缺血吃什么药好| 鸡眼去医院挂什么科| 兆以上的计数单位是什么| 指甲白色是什么原因| 11月18日什么星座| 长胸毛的男人代表什么| 脾胃科主要看什么| 床垫什么材质的好| 女生喜欢什么礼物| 接龙是什么意思| 未免是什么意思| np是什么意思| 内风湿是什么原因引起的| 季昌明是什么级别| 吃什么促进恶露排干净| 什么是粉丝| 贡缎是什么面料| 晚上睡觉口苦是什么原因| 出虚汗吃什么药| 造纸术什么时候发明的| 大腿外侧麻木是什么原因| 心跳过快是什么原因引起的| 声声慢是什么意思| 易拉罐是什么垃圾| 什么东西养胃| 牛腩炖什么好吃| 九月四号是什么星座的| 洗发水和洗发露有什么区别| 男扮女装叫什么| 甲功是查什么的| 停止长高有什么征兆| 月经来了头疼是什么原因导致的| 婆婆过生日送什么礼物好| 肾亏吃什么好| 血糖高挂什么科| 现在当兵需要什么条件| 嗝气是什么原因| 面瘫是什么原因引起的| 离退休是什么意思| 气罐和火罐有什么区别| 夏天适合种什么植物| 女人梦到被蛇咬是什么意思| 西洋参有什么用| 1977年是什么年| 自然色是什么颜色| 痛经什么原因引起的| 维c吃多了有什么副作用| 公分的单位是什么| 囊胚是什么意思| 百度
这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 ? 论坛首页 ? 企业专区 ? OpenVINO生态社区 ? 【原创】OpenCV-Python系列之轮廓属性(三十一)

共4条 1/1 1 跳转至

【原创】OpenCV-Python系列之轮廓属性(三十一)

高工
2025-08-04 20:08:54     打赏
百度 加大对创新团队和优秀人才的奖励力度。

OpenCV-Python系列之轮廓属性

之前我们讨论了轮廓的各种特征,OpenCV中关于图像的轮廓特征还是非常之多的。今天将讨论轮廓的一些简单的属性。

长宽比

它是对象边界矩形的宽度与高度的比,我们在之前的教程中已经介绍了获取图像轮廓的xywh,它们由函数:

x,y,w,h = cv.boundingRect(cnt)

得到,当然,我们在这里谈论的是图像的边界矩形,并非是最小边界矩形。

现在来计算长宽比,公式:

image.png

代码:

import cv2
import numpy as np

# 读取图片并转至灰度模式
img = cv2.imread("tubao.png", 1)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

# 二值化,取阈值为235
ret, thresh = cv2.threshold(gray, 235, 255, cv2.THRESH_BINARY)

# 寻找图像中的轮廓
contours, hierarchy = cv2.findContours(thresh, 2, 1)

cnt = contours[0]
x,y,w,h = cv2.boundingRect(cnt)
cv2.rectangle(img,(x,y),(x+w,y+h),(0,0,255),2)
aspect_ratio = float(w)/h
print(aspect_ratio)
cv2.imshow('res', img)
cv2.waitKey()

image.png

image.png

大小比

它是轮廓区域与边界矩形区域的比,公式:

image.png

代码:

import cv2
import numpy as np

# 读取图片并转至灰度模式
img = cv2.imread("tubao.png", 1)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

# 二值化,取阈值为235
ret, thresh = cv2.threshold(gray, 235, 255, cv2.THRESH_BINARY)

# 寻找图像中的轮廓
contours, hierarchy = cv2.findContours(thresh, 2, 1)

cnt = contours[0]
area = cv2.contourArea(cnt)
x,y,w,h = cv2.boundingRect(cnt)
rect_area = w*h
extent = float(area)/rect_area
print(extent)
cv2.rectangle(img,(x,y),(x+w,y+h),(0,0,255),2)
cv2.imshow('res', img)
cv2.waitKey()

仍然是上面那个图像,我们来看输出结果:

image.png

密实比

密实比是轮廓区域与其凸包区域的比,凸包区域我们在前面已经讲过:

image.png

代码:

import cv2
import numpy as np

# 读取图片并转至灰度模式
img = cv2.imread("tubao.png", 1)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

# 二值化,取阈值为235
ret, thresh = cv2.threshold(gray, 235, 255, cv2.THRESH_BINARY)

# 寻找图像中的轮廓
contours, hierarchy = cv2.findContours(thresh, 2, 1)

cnt = contours[0]
area = cv2.contourArea(cnt)
hull = cv2.convexHull(cnt)
hull_area = cv2.contourArea(hull)
solidity = float(area)/hull_area
print(solidity)
lengh = len(hull)
for i in range(len(hull)):
    cv2.line(img,tuple(hull[i][0]),tuple(hull[(i+1)%lengh][0]),
             (0,0,255),2)

cv2.imshow('res', img)
cv2.waitKey()

image.png

image.png

等效直径

等效直径是圆的直径,其面积与轮廓面积相同:

image.png

代码:

import cv2
import numpy as np

# 读取图片并转至灰度模式
img = cv2.imread("tubao.png", 1)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

# 二值化,取阈值为235
ret, thresh = cv2.threshold(gray, 235, 255, cv2.THRESH_BINARY)

# 寻找图像中的轮廓
contours, hierarchy = cv2.findContours(thresh, 2, 1)

cnt = contours[0]
area = cv2.contourArea(cnt)
equi_diameter = np.sqrt(4*area/np.pi)
print(equi_diameter)
cv2.waitKey()

image.png

方向

其实际上就是指物体指向的角度,我们在之前的椭圆拟合里就讲过,它会返回三个参数:主轴和短轴长度以及角度,我们来看代码:

import cv2
import numpy as np

# 读取图片并转至灰度模式
img = cv2.imread("tubao.png", 1)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

# 二值化,取阈值为235
ret, thresh = cv2.threshold(gray, 235, 255, cv2.THRESH_BINARY)

# 寻找图像中的轮廓
contours, hierarchy = cv2.findContours(thresh, 2, 1)

cnt = contours[0]
(x,y),(MA,ma),angle = cv2.fitEllipse(cnt)
print(angle)
cv2.waitKey(0)

image.png

掩模和像素点

在某些情况下,我们可能需要包含该对象的所有点,本质相当于用另一层图层覆盖当前的轮廓,代码:

import cv2
import numpy as np

# 读取图片并转至灰度模式
img = cv2.imread("tubao.png", 1)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

# 二值化,取阈值为235
ret, thresh = cv2.threshold(gray, 235, 255, cv2.THRESH_BINARY)

# 寻找图像中的轮廓
contours, hierarchy = cv2.findContours(thresh, 2, 1)

cnt = contours[0]
mask = np.zeros(img.shape,np.uint8)
cv2.drawContours(mask,[cnt],0,255,-1)
pixelpoints = np.transpose(np.nonzero(mask))
print(pixelpoints)
cv2.imshow("img",img)
cv2.imshow("res",mask)
cv2.waitKey(0)

image.png

image.png

image.png

可以看到,轮廓内的图形都被蓝色的图层覆盖了,这在以后的综合项目中将非常有用,可以消除不必要的噪声。

最大值,最小值及其位置

我们可以使用以下函数找到图像矩阵的最大值、最小值以及它们相应的索引位置:

min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(gray)

gray指代图像的灰度图像,我们直接来看代码:

import cv2
import numpy as np

# 读取图片并转至灰度模式
img = cv2.imread("tubao.png", 1)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

# 二值化,取阈值为235
ret, thresh = cv2.threshold(gray, 235, 255, cv2.THRESH_BINARY)

# 寻找图像中的轮廓
contours, hierarchy = cv2.findContours(thresh, 2, 1)

cnt = contours[0]
mask = np.zeros(img.shape,np.uint8)
min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(gray)
print(min_val, max_val, min_loc, max_loc)
cv2.imshow("img",img)
cv2.imshow("res",mask)
cv2.waitKey(0)

image.png

事实上,该方法被广泛的应用在OpenCV的模板匹配中,这个我们将在后面详述。

极点

极值点表示对象的最顶部,最底部,最右侧和最左侧的点。,我们同样可以通过代码实现:

import cv2
import numpy as np

# 读取图片并转至灰度模式
img = cv2.imread("tubao.png", 1)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

# 二值化,取阈值为235
ret, thresh = cv2.threshold(gray, 235, 255, cv2.THRESH_BINARY)

# 寻找图像中的轮廓
contours, hierarchy = cv2.findContours(thresh, 2, 1)

cnt = contours[0]
leftmost = tuple(cnt[cnt[:,:,0].argmin()][0])
rightmost = tuple(cnt[cnt[:,:,0].argmax()][0])
topmost = tuple(cnt[cnt[:,:,1].argmin()][0])
bottommost = tuple(cnt[cnt[:,:,1].argmax()][0])
cv2.circle(img,leftmost,2,(0,0,255),5)
cv2.circle(img,rightmost,2,(0,255,255),5)
cv2.circle(img,topmost,2,(255,0,255),5)
cv2.circle(img,bottommost,2,(255,0,122),5)
cv2.imshow("img",img)
cv2.waitKey(0)

image.png

关于OpenCV中的轮廓属性我们就讨论到这里,我们在后期的综合训练中会普遍的用到。


对计算机视觉感兴趣?这个社区推荐给你~

>>点击了解OpenVINO生态开发社区




关键词: OpenCV-Python    

工程师
2025-08-04 20:47:11     打赏
2楼

期待楼主继续更新


工程师
2025-08-04 21:04:55     打赏
3楼

楼主非常厉害!


工程师
2025-08-04 15:27:17     打赏
4楼

十分感谢你的分享


共4条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]
体内湿气重是什么原因造成的 1998年出生属什么 脉涩是什么意思 喝蒲公英根有什么好处 胃穿孔是什么原因引起的
孕妇梦见血是什么预兆 汗多尿少是什么原因 嘴唇干裂是什么原因 胎儿左心室强光斑是什么意思 特别怕热爱出汗是什么原因
毛囊炎吃什么药 苹果什么时候成熟 百合和什么一起煮可以治失眠 什么发色显白 怎么判断脸上是什么斑
嘴唇颜色深是什么原因 酒店五行属什么 脱发是什么原因 老鼠的克星是什么 美国fda认证是什么
字字珠玑是什么意思baiqunet.com 得宫颈癌的前兆是什么hcv7jop5ns5r.cn 经常拉肚子吃什么药好hcv9jop5ns5r.cn 一点小事就暴躁的人是什么病hcv8jop2ns1r.cn 尿道炎和阴道炎有什么区别hcv9jop4ns8r.cn
b超是检查什么的weuuu.com 属虎的五行属什么hcv8jop3ns6r.cn 区长是什么级别的干部hcv9jop6ns2r.cn 细小是什么hcv9jop1ns1r.cn 母的第三笔是什么beikeqingting.com
气胸有什么症状xscnpatent.com 什么是富氢水hcv8jop3ns8r.cn a型血与o型血生的孩子是什么血型hcv9jop5ns8r.cn 心电轴重度左偏是什么意思hcv9jop3ns3r.cn 医生为什么看瞳孔知道没救了hcv8jop0ns8r.cn
低聚糖是什么hcv7jop4ns6r.cn 脚气什么样hcv8jop0ns0r.cn 多囊是什么原因造成的hcv8jop0ns9r.cn 梦见自己掉了两颗牙齿是什么意思hcv8jop7ns4r.cn 治类风湿用什么方法好hcv9jop7ns2r.cn
百度