使用Python,OpenCV寻找图像中的轮廓
生活随笔
收集整理的這篇文章主要介紹了
使用Python,OpenCV寻找图像中的轮廓
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
使用Python和OpenCV查找圖像中的形狀
- 1. 效果圖
- 2. 步驟
- 3. 源碼
- 參考
這篇博客將討論使用Python和OpenCV查找圖像中的形狀,具體是
- cv2.inRange在圖像中查找形狀;
- cv2.findContours尋找輪廓;
自己開發項目以提高和磨練技能 是最好的學習方法,我強烈推薦給對計算機視覺感興趣的所有人。
1. 效果圖
原圖:
閾值化的mask圖:
找出圖像中黑色的形狀輪廓圖:
2. 步驟
觀察發現所有的形狀顏色基本都是黑色,定義顏色邊界,黑色~深灰色
- 加載圖像
- 提取出圖像中介于白色和深灰色的像素
- 提取輪廓
- 遍歷輪廓并展示
3. 源碼
# USAGE
# python find_shapes.py --image shapes.png# 導入必要的包
import argparseimport cv2
import imutils
import numpy as np# 構建命令行參數及解析
# --image:圖像的路徑
ap = argparse.ArgumentParser()
ap.add_argument("-i", "--image", help="path to the image file")
args = vars(ap.parse_args())# 加載圖像
image = cv2.imread(args["image"])
cv2.imshow("origin Image", image)
cv2.waitKey(0)# 目標:檢測圖像中的黑色形狀 使用cv2.inRange實際上檢測這些黑色形狀非常容易
# 檢測圖像中的所有黑色形狀
# OpenCV以BGR格式存儲圖像,定義圖像顏色的上下邊界
lower = np.array([0, 0, 0]) # 純黑色
upper = np.array([15, 15, 15]) # 包含非常深的灰色陰影
shapeMask = cv2.inRange(image, lower, upper)# 原始圖像中的所有黑色形狀現在在黑色背景上均為白色。
# 檢測shapeMask中的輪廓
cnts = cv2.findContours(shapeMask.copy(), cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)
cnts = imutils.grab_contours(cnts) # 兼容不同版本的openCV結果
print("I found {} black shapes".format(len(cnts)))
cv2.imshow("Mask", shapeMask)# 遍歷檢測到的輪廓
for c in cnts:# 畫出輪廓并展示 綠色cv2.drawContours(image, [c], -1, (0, 255, 0), 2)cv2.imshow("Image", image)cv2.waitKey(0)
參考
- https://www.pyimagesearch.com/2014/10/20/finding-shapes-images-using-python-opencv/
總結
以上是生活随笔為你收集整理的使用Python,OpenCV寻找图像中的轮廓的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用Pyhthon,OpenCV和ZBa
- 下一篇: Docker容器化部署config-se