私はOpenCVを初めて使用しており、検出のためにビデオ/画像内の特定の地域を選択したいと考えています。私の場合、私は駐車場にではなく道路にしかない車を検出したいと思っています。地域の選択OpenCV
5
A
答えて
8
まあ、車を選択するには、トレーニングデータの使用が必要です。しかし、ROI(関心領域)を選択することは非常に簡単です:
その場合、img = cv2.imread(image)
を考えてみましょう、どこかにあなたのコードでは、あなたは地域この方法を指定することができます。
ますsub_image = img[y:y+h, x:x+w]
いったん値を指定するとROIを得ることができます。もちろん、 'x'または 'y'を使用しないでください.hは高さ、wは幅です。画像は2D行列だけであることを忘れないでください。
CascadeClassifier()
を使用して画像から車を選択してください。ドキュメントはhereです。 OpenCVには、XMLファイルの形式で分類を行うためのトレーニングデータが満載されています。
7
関心領域(ROI)を手動で選択して処理したい場合は、マウスクリックイベントを使用してROIの開始点と終了点を選択します。
開始点と終了点を取得したら、選択した領域から画像を取得できます。
画像またはキャプチャビデオフレームで行うことができます。
bool roi_captured = false;
Point pt1, pt2;
Mat cap_img;
//Callback for mousclick event, the x-y coordinate of mouse button-up and button-down
//are stored in two points pt1, pt2.
void mouse_click(int event, int x, int y, int flags, void *param)
{
switch(event)
{
case CV_EVENT_LBUTTONDOWN:
{
std::cout<<"Mouse Pressed"<<std::endl;
if(!roi_capture)
{
pt1.x = x;
pt1.y = y;
}
else
{
std::cout<<"ROI Already Acquired"<<std::endl;
}
break;
}
case CV_EVENT_LBUTTONUP:
{
if(!got_roi)
{
Mat cl;
std::cout<<"Mouse LBUTTON Released"<<std::endl;
pt2.x = x;
pt2.y = y;
cl = cap_img.clone();
Mat roi(cl, Rect(pt1, pt2));
Mat prev_imgT = roi.clone();
std::cout<<"PT1"<<pt1.x<<", "<<pt1.y<<std::endl;
std::cout<<"PT2"<<pt2.x<<","<<pt2.y<<std::endl;
imshow("Clone",cl);
got_roi = true;
}
else
{
std::cout<<"ROI Already Acquired"<<std::endl;
}
break;
}
}
}
//In main open video and wait for roi event to complete by the use.
// You capture roi in pt1 and pt2 you can use the same coordinates for processing // //subsequent frame
int main(int argc, char *argv[])
{
int frame_num = 0;
int non_decode_frame =0;
int count = 1, idx =0;
int frame_pos =0;
std::cout<<"Video File "<<argv[1]<<std::endl;
cv::VideoCapture input_video(argv[1]);
namedWindow("My_Win",1);
cvSetMouseCallback("My_Win", mouse_click, 0);
sleep(1);
while(input_video.grab())
{
cap_img.release();
if(input_video.retrieve(cap_img))
{
imshow("My_Win", cap_img);
if(!got_roi)
{
//Wait here till user select the desire ROI
waitKey(0);
}
else
{
std::cout<<"Got ROI disp prev and curr image"<<std::endl;
std::cout<<"PT1"<<pt1.x<<" "<<pt1.y<<std::endl;
std::cout<<"PT2"<<pt2.x<<" "<<pt2.y<<std::endl;
Mat curr_img_t1;
Mat roi2(cap_img,Rect(pt1, pt2));
Mat curr_imgT = roi2.clone();
cvtColor(curr_imgT, curr_img_t1, CV_RGB2GRAY);
imshow("curr_img", curr_img);
// Do remaining processing here on capture roi for every frame
waitKey(1);
}
}
}
}
関連する問題
- 1. 画面領域の選択
- 2. 地域
- 3. opencVでUsbカメラを選択
- 4. Android:カスタム地域地図
- 5. Googleダーツ地域
- 6. Registring地域
- 7. PRISM RegionManager地域
- 8. 地域 - 等距離地域のための英語の説明
- 9. Googleのgeochartの自動選択領域
- 10. jQueryウィザードでイメージの領域を選択
- 11. 周辺地域SQL
- 12. データベースデザイン - アイテムと地域
- 13. Gemfire地域同期
- 14. MKMapViewズームと地域
- 15. 数独 - 地域テスト
- 16. 地域または地域によるローカライゼーション
- 17. マウスの上のカスタムマップ/地域
- 18. プログラムで領域を選択する
- 19. 地域内のSikuliアクション
- 20. Googleマップ地域別のクラスタリング
- 21. Sharepointの地域設定
- 22. KML地域の形状
- 23. 地域の整合性
- 24. iOS地域の監視
- 25. 地域限定のiPhoneアプリ
- 26. 地域ベースのメモリ管理
- 27. 地図上の地域地図の変更AndroidSdk
- 28. AWS US-east地域から中国地域へのジェンキン接続のベストプラクティス
- 29. システムの地域表記と異なる地域表記を使用する
- 30. 国、都道府県/地域、都市選択メニューのデータを読み込むためのAPIまたはデータベース