findcontoursの輪郭認識の動きを見えるようにしたらキモかった
opencvのfindcontoursの動きを一個一個見てみたかっただけです。
輪郭検出と輪郭内面積・重心計算 | OpenCV画像解析入門
↑参考にしたやつ
輪郭が格納されている?countoursの中身がこんな感じだったので、 順番に青い線で結んでいってみました。
円とかを表現しようとしたら頂点が多いので、たくさん端点が出来るってことなのかな?
ちゃんと輪郭をなぞっていっているのがわかります。
なんか、虫が這いずり回っているみたい。
# -*- coding:utf-8 -*-
import cv2
import sys
imgFile = sys.argv[1]
img = cv2.imread(imgFile)
#ガウシアンフィルタ,ノイズ除去
img = cv2.GaussianBlur(img, (5, 5), 0)
#cannyにより エッジか、そうでないかの二値画像になる。
kani = cv2.Canny(img, 0, 50, apertureSize=5)
cv2.imshow("canny",kani)
cv2.waitKey()
#各輪郭countours 要素hierarchy
#RETR_LIST すべての輪郭を抽出
#CHAIN_APPROX_SIMPLE 水平・垂直・斜めの線分を圧縮したやつの端点
contours ,hierarchy = cv2.findContours(kani, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)
for a in range(0,len(contours)):
print contours[a]
print "******"
for b in range(0,len(contours[a])-1):
cv2.line(img,(contours[a][b][0][0],contours[a][b][0][1]),(contours[a][b+1][0][0],contours[a][b+1][0][1]),(200,0,0),3)
cv2.imshow("contours",img)
cv2.waitKey()
import cv2
import sys
imgFile = sys.argv[1]
img = cv2.imread(imgFile)
#ガウシアンフィルタ,ノイズ除去
img = cv2.GaussianBlur(img, (5, 5), 0)
#cannyにより エッジか、そうでないかの二値画像になる。
kani = cv2.Canny(img, 0, 50, apertureSize=5)
cv2.imshow("canny",kani)
cv2.waitKey()
#各輪郭countours 要素hierarchy
#RETR_LIST すべての輪郭を抽出
#CHAIN_APPROX_SIMPLE 水平・垂直・斜めの線分を圧縮したやつの端点
contours ,hierarchy = cv2.findContours(kani, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)
for a in range(0,len(contours)):
print contours[a]
print "******"
for b in range(0,len(contours[a])-1):
cv2.line(img,(contours[a][b][0][0],contours[a][b][0][1]),(contours[a][b+1][0][0],contours[a][b+1][0][1]),(200,0,0),3)
cv2.imshow("contours",img)
cv2.waitKey()
輪郭を認識してるんだけど、動きキモい。
— alaki paca (@arabiiiiiiiiiii) 2016年5月20日
虫が這ってるみたい。 pic.twitter.com/BVI7N0osUS