Tôi mới sử dụng OpenCV và tôi muốn chọn một khu vực cụ thể trong video/hình ảnh để phát hiện. Trong trường hợp của tôi, tôi muốn phát hiện những chiếc xe chỉ ở trên đường không có trong bãi đậu xe.Chọn một khu vực OpenCV
Trả lời
Vâng, việc chọn ô tô yêu cầu sử dụng dữ liệu đào tạo. Tuy nhiên, để chọn một ROI (vùng quan tâm) là khá đơn giản:
Cân nhắc img = cv2.imread(image)
Trong trường hợp đó, ở đâu đó trong mã của bạn, bạn có thể chỉ định một khu vực như sau:
sub_image = img[y:y+h, x:x+w]
Đó sẽ nhận được ROI khi bạn chỉ định các giá trị, tất nhiên, không sử dụng 'x' hoặc 'y', trong đó h là chiều cao và w là chiều rộng. Hãy nhớ rằng hình ảnh chỉ là ma trận 2D.
Sử dụng CascadeClassifier()
để chọn (các) xe từ (các) hình ảnh. Tài liệu được tìm thấy here. OpenCV được đóng gói với dữ liệu đào tạo mà bạn có thể sử dụng để tạo phân loại ở dạng tệp XML.
Nếu bạn muốn chọn khu vực quan tâm (ROI) theo cách thủ công để thực hiện một số xử lý, bạn có thể thử sử dụng sự kiện nhấp chuột để chọn điểm bắt đầu và điểm dừng của ROI.
Khi bạn đã bắt đầu và dừng điểm, bạn có thể sử dụng nó để truy xuất hình ảnh từ khu vực được chọn.
Có thể thực hiện trên hình ảnh hoặc chụp khung hình video.
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. Align chọn khu vực trong emacs
- 2. Chọn điểm trong một khu vực hình tròn trong Mathematica
- 3. Khu vực di động Vs Nhiều khu vực dự án?
- 4. Python OpenCV - Tìm các khu vực màu đen trong một hình ảnh nhị phân
- 5. MKMapView đặt khu vực
- 6. Khu vực Google Dart?
- 7. UIImage từ một khu vực của UIView
- 8. Vẽ khu vực hình tròn
- 9. ggplot2 lề khu vực ô?
- 10. JQVMap khu vực Bấm Lỗi
- 11. khu vực PDFBox PDFTextStripperByArea phối
- 12. WPF, Prism v2, Khu vực trong hộp thoại phương thức, thêm khu vực ở mã sau
- 13. Thay đổi một khu vực hoặc dòng trong các emacs
- 14. Vim: xóa các dòng trống trong một khu vực được chọn trực quan
- 15. Làm thế nào để sao chép một khu vực hình ảnh bằng cách sử dụng opencv trong python?
- 16. Trả lại chế độ xem từ một khu vực khác
- 17. "Khu vực hiển thị" của một điều khiển?
- 18. Hiển thị bản đồ Google từ một khu vực ẩn
- 19. cách thu gọn khoảng trắng trong một khu vực?
- 20. Find khu vực nhất định một tập hợp các điểm
- 21. Emacs: đánh dấu liên tục của một khu vực
- 22. ASP.NET MVC ActionLink bên ngoài khu vực
- 23. Khu vực MVC ASP và ActionLink
- 24. Hỗ trợ khu vực ASP.Net WebAPI
- 25. Tạo liên kết chéo (href) khu vực
- 26. tuyến Register đăng ký khu vực
- 27. Khu vực Phương pháp và PermGen
- 28. Lõi Location khu vực giám sát
- 29. R: tìm chỉ số khu vực gần
- 30. Tắt máy chủ Khu vực Hbase