OpenCV를 사용한 얼룩 감지 실행 예
소개
블롭(덩어리)이란, 비슷한 특징을 가진 화상내의 영역을 의미합니다. 예를 들어 아래와 같은 이미지에서는 원과 같은 도형이 얼룩이라고 말할 수 있습니다.
OpenCV에는 얼룩을 자동으로 감지 할 수있는 기능이 내장되어있어 쉽게 찾을 수 있습니다.
하고 싶은 일
원형을 찾아 카운트하고 싶다.
코드
blob.pyimport cv2
import numpy as np
# 画像の読み込み
image = cv2.imread('shapes.jpg', 0)
# パラメータの初期化
params = cv2.SimpleBlobDetector_Params()
# ブロブ領域(minArea <= blob < maxArea)
params.filterByArea = True
params.minArea = 100
# 真円度( 4∗π∗Area / perimeter∗perimeter によって定義される)
#(minCircularity <= blob < maxCircularity)
params.filterByCircularity = True
params.minCircularity = 0.85
# 凸面の情報(minConvexity <= blob < maxConvexity)
params.filterByConvexity = True
params.minConvexity = 0.1
# 楕円形を表す(minInertiaRatio <= blob < maxInertiaRatio)
params.filterByInertia = True
params.minInertiaRatio = 0.1
# 検知器作成
detector = cv2.SimpleBlobDetector_create(params)
# ブロブ検知
keypoints = detector.detect(image)
# ブロブを赤丸で囲む
blank = np.zeros((1, 1))
blobs = cv2.drawKeypoints(image, keypoints, blank, (0, 0, 255),
cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS)
# ブロブの個数
count = len(keypoints)
print(f'丸の個数: {count}')
# 画像を表示
cv2.imshow("out.jpg", blobs)
cv2.waitKey(0)
cv2.destroyAllWindows()
결과
>python blob.py
丸の個数: 8
※틀이 빨강에서 흑으로 변화한 것은, 그레이 스케일로 읽어들였기 때문입니다.
실행에 실패한 이야기
다른 사이트에서 소개 된 코드를 시도하면 파이썬이 충돌했습니다.
조사해 보면 OpenCV의 버전이 영향을 미친 것 같습니다. 이전 버전의 OpenCV에서는 SimpleBlobDetector_create() 대신 SimpleBlobDetector()라는 함수가 사용되었으며 copipe로 코드 실행 → 현재는 사용되지 않는 함수 참조 → 크래시라는 흐름이 발생했다고 생각합니다. 합니다.
대책으로는 SimpleBlobDetector_create()를 사용하거나 아래 코드로 다시 쓰면 오류를 피할 수 있습니다.
ver = (cv2.__version__).split('.')
if int(ver[0]) < 3:
detector = cv2.SimpleBlobDetector(params)
else:
detector = cv2.SimpleBlobDetector_create(params)
결론
블롭 검지의 응용예로서는 개수의 카운트나 위치 검지가 있습니다. OpenCV에 의해 간단하게 사용할 수 있으므로, 이 예 이외에서도 시험해 가고 싶습니다.
마지막까지 보아 주셔서 감사합니다. 코멘트・지적등 있으면 감사합니다.
참고 URL
htps //w w. p 여과 등 mc 네 k. 이 m/py 텐/에 mpぇ/89350/cv2. mp ぇ B ぉ b에서 c와 r
htps //w w.ゔぃs こーち ch. 이 m / ch ch 또는 l / ぢ 레 c 치 온 p 센세 / b ぉ b /
Reference
이 문제에 관하여(OpenCV를 사용한 얼룩 감지 실행 예), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/isso_w/items/1108e20dd4b1199ed731
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
원형을 찾아 카운트하고 싶다.
코드
blob.pyimport cv2
import numpy as np
# 画像の読み込み
image = cv2.imread('shapes.jpg', 0)
# パラメータの初期化
params = cv2.SimpleBlobDetector_Params()
# ブロブ領域(minArea <= blob < maxArea)
params.filterByArea = True
params.minArea = 100
# 真円度( 4∗π∗Area / perimeter∗perimeter によって定義される)
#(minCircularity <= blob < maxCircularity)
params.filterByCircularity = True
params.minCircularity = 0.85
# 凸面の情報(minConvexity <= blob < maxConvexity)
params.filterByConvexity = True
params.minConvexity = 0.1
# 楕円形を表す(minInertiaRatio <= blob < maxInertiaRatio)
params.filterByInertia = True
params.minInertiaRatio = 0.1
# 検知器作成
detector = cv2.SimpleBlobDetector_create(params)
# ブロブ検知
keypoints = detector.detect(image)
# ブロブを赤丸で囲む
blank = np.zeros((1, 1))
blobs = cv2.drawKeypoints(image, keypoints, blank, (0, 0, 255),
cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS)
# ブロブの個数
count = len(keypoints)
print(f'丸の個数: {count}')
# 画像を表示
cv2.imshow("out.jpg", blobs)
cv2.waitKey(0)
cv2.destroyAllWindows()
결과
>python blob.py
丸の個数: 8
※틀이 빨강에서 흑으로 변화한 것은, 그레이 스케일로 읽어들였기 때문입니다.
실행에 실패한 이야기
다른 사이트에서 소개 된 코드를 시도하면 파이썬이 충돌했습니다.
조사해 보면 OpenCV의 버전이 영향을 미친 것 같습니다. 이전 버전의 OpenCV에서는 SimpleBlobDetector_create() 대신 SimpleBlobDetector()라는 함수가 사용되었으며 copipe로 코드 실행 → 현재는 사용되지 않는 함수 참조 → 크래시라는 흐름이 발생했다고 생각합니다. 합니다.
대책으로는 SimpleBlobDetector_create()를 사용하거나 아래 코드로 다시 쓰면 오류를 피할 수 있습니다.
ver = (cv2.__version__).split('.')
if int(ver[0]) < 3:
detector = cv2.SimpleBlobDetector(params)
else:
detector = cv2.SimpleBlobDetector_create(params)
결론
블롭 검지의 응용예로서는 개수의 카운트나 위치 검지가 있습니다. OpenCV에 의해 간단하게 사용할 수 있으므로, 이 예 이외에서도 시험해 가고 싶습니다.
마지막까지 보아 주셔서 감사합니다. 코멘트・지적등 있으면 감사합니다.
참고 URL
htps //w w. p 여과 등 mc 네 k. 이 m/py 텐/에 mpぇ/89350/cv2. mp ぇ B ぉ b에서 c와 r
htps //w w.ゔぃs こーち ch. 이 m / ch ch 또는 l / ぢ 레 c 치 온 p 센세 / b ぉ b /
Reference
이 문제에 관하여(OpenCV를 사용한 얼룩 감지 실행 예), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/isso_w/items/1108e20dd4b1199ed731
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
import cv2
import numpy as np
# 画像の読み込み
image = cv2.imread('shapes.jpg', 0)
# パラメータの初期化
params = cv2.SimpleBlobDetector_Params()
# ブロブ領域(minArea <= blob < maxArea)
params.filterByArea = True
params.minArea = 100
# 真円度( 4∗π∗Area / perimeter∗perimeter によって定義される)
#(minCircularity <= blob < maxCircularity)
params.filterByCircularity = True
params.minCircularity = 0.85
# 凸面の情報(minConvexity <= blob < maxConvexity)
params.filterByConvexity = True
params.minConvexity = 0.1
# 楕円形を表す(minInertiaRatio <= blob < maxInertiaRatio)
params.filterByInertia = True
params.minInertiaRatio = 0.1
# 検知器作成
detector = cv2.SimpleBlobDetector_create(params)
# ブロブ検知
keypoints = detector.detect(image)
# ブロブを赤丸で囲む
blank = np.zeros((1, 1))
blobs = cv2.drawKeypoints(image, keypoints, blank, (0, 0, 255),
cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS)
# ブロブの個数
count = len(keypoints)
print(f'丸の個数: {count}')
# 画像を表示
cv2.imshow("out.jpg", blobs)
cv2.waitKey(0)
cv2.destroyAllWindows()
>python blob.py
丸の個数: 8
※틀이 빨강에서 흑으로 변화한 것은, 그레이 스케일로 읽어들였기 때문입니다.
실행에 실패한 이야기
다른 사이트에서 소개 된 코드를 시도하면 파이썬이 충돌했습니다.
조사해 보면 OpenCV의 버전이 영향을 미친 것 같습니다. 이전 버전의 OpenCV에서는 SimpleBlobDetector_create() 대신 SimpleBlobDetector()라는 함수가 사용되었으며 copipe로 코드 실행 → 현재는 사용되지 않는 함수 참조 → 크래시라는 흐름이 발생했다고 생각합니다. 합니다.
대책으로는 SimpleBlobDetector_create()를 사용하거나 아래 코드로 다시 쓰면 오류를 피할 수 있습니다.
ver = (cv2.__version__).split('.')
if int(ver[0]) < 3:
detector = cv2.SimpleBlobDetector(params)
else:
detector = cv2.SimpleBlobDetector_create(params)
결론
블롭 검지의 응용예로서는 개수의 카운트나 위치 검지가 있습니다. OpenCV에 의해 간단하게 사용할 수 있으므로, 이 예 이외에서도 시험해 가고 싶습니다.
마지막까지 보아 주셔서 감사합니다. 코멘트・지적등 있으면 감사합니다.
참고 URL
htps //w w. p 여과 등 mc 네 k. 이 m/py 텐/에 mpぇ/89350/cv2. mp ぇ B ぉ b에서 c와 r
htps //w w.ゔぃs こーち ch. 이 m / ch ch 또는 l / ぢ 레 c 치 온 p 센세 / b ぉ b /
Reference
이 문제에 관하여(OpenCV를 사용한 얼룩 감지 실행 예), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/isso_w/items/1108e20dd4b1199ed731
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
ver = (cv2.__version__).split('.')
if int(ver[0]) < 3:
detector = cv2.SimpleBlobDetector(params)
else:
detector = cv2.SimpleBlobDetector_create(params)
블롭 검지의 응용예로서는 개수의 카운트나 위치 검지가 있습니다. OpenCV에 의해 간단하게 사용할 수 있으므로, 이 예 이외에서도 시험해 가고 싶습니다.
마지막까지 보아 주셔서 감사합니다. 코멘트・지적등 있으면 감사합니다.
참고 URL
htps //w w. p 여과 등 mc 네 k. 이 m/py 텐/에 mpぇ/89350/cv2. mp ぇ B ぉ b에서 c와 r
htps //w w.ゔぃs こーち ch. 이 m / ch ch 또는 l / ぢ 레 c 치 온 p 센세 / b ぉ b /
Reference
이 문제에 관하여(OpenCV를 사용한 얼룩 감지 실행 예), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/isso_w/items/1108e20dd4b1199ed731
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Reference
이 문제에 관하여(OpenCV를 사용한 얼룩 감지 실행 예), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/isso_w/items/1108e20dd4b1199ed731텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)