イメージの特定の領域で輪郭線を見つけようとしています。画像の残りの部分に輪郭を表示するのではなく、ROI内に輪郭を表示することは可能ですか?私はマスクを使うべきであるという別の同様の記事を読みましたが、私はそれを正しく使ったとは思いません。 OpenCVとPythonには新しいものがありますので、どんな助けでも大いに役立ちます。opencvとPythonを使用してROI内の輪郭を見つける方法はありますか?
import numpy as np
import cv2
cap = cv2.VideoCapture('size4.avi')
x, y, w, h= 150, 50, 400 ,350
roi = (x, y, w, h)
while(True):
ret, frame = cap.read()
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
_, thresh = cv2.threshold(gray, 127, 255, 0)
im2, contours, hierarchy = cv2.findContours(thresh, cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
roi = cv2.rectangle(frame, (x,y), (x+w, y+h), (0,0,255), 2)
mask = np.zeros(roi.shape,np.uint8)
cv2.drawContours(mask, contours, -1, (0,255,0), 3)
cv2.imshow('img', frame)
うわー、ありがとう!それは本当に有益でした。 – agrom
イメージでマスキングを実行する方法を知りたいので、私はこのソリューションを提供しました。キーは関数 'cv2.bitwise_and()'を効率的に使用することです。 –
はい、それはマスクする方法を理解する素晴らしい方法でした;)小さなフォローアップの質問:私が輪郭を描くときに、 ROIのフレームと内部の輪郭は、起こるはずですか?私はあなたがあなたの例でそれを持っていないのを見ます。 – agrom