Tôi đang thực hiện dự án trong OpenCV về phát hiện đối tượng bao gồm đối tượng trong ảnh mẫu với hình ảnh tham chiếu. Sử dụng thuật toán SIFT các tính năng được phát hiện chính xác và phù hợp nhưng tôi muốn một rectagle xung quanh các tính năng phù hợp Thuật toán của tôi sử dụng KD-Tree est ean Kỹ thuật đầu tiên để có được các kết quả phù hợpCách lấy một hình chữ nhật xung quanh đối tượng đích bằng cách sử dụng các tính năng được trích xuất bằng SIFT trong OpenCV
9
A
Trả lời
7
Nếu bạn muốn một hình chữ nhật xung quanh đối tượng được phát hiện, here bạn có ví dụ mã với chính xác điều đó. Bạn chỉ cần draw a rectangle quanh địa lý nhà riêng H.
Hy vọng điều đó sẽ hữu ích. Chúc may mắn.
5
Tôi sử dụng mã sau đây, được điều chỉnh từ thuật toán SURF trong OpenCV (modules/features2d/src/surf.cpp) để trích xuất xung quanh một điểm chính.
Ngoài các ví dụ khác dựa trên hình chữ nhật và ROI, mã này trả về bản vá theo đúng định hướng và tỷ lệ được xác định bằng thuật toán phát hiện tính năng (có sẵn trong cấu trúc KeyPoint
).
Một ví dụ về kết quả của việc phát hiện trên hình ảnh khác nhau:
const int PATCH_SZ = 20;
Mat extractKeyPoint(const Mat& image, KeyPoint kp)
{
int x = (int)kp.pt.x;
int y = (int)kp.pt.y;
float size = kp.size;
float angle = kp.angle;
int win_size = (int)((PATCH_SZ+1)*size*1.2f/9.0);
Mat win(win_size, win_size, CV_8UC3);
float descriptor_dir = angle * (CV_PI/180);
float sin_dir = sin(descriptor_dir);
float cos_dir = cos(descriptor_dir);
float win_offset = -(float)(win_size-1)/2;
float start_x = x + win_offset*cos_dir + win_offset*sin_dir;
float start_y = y - win_offset*sin_dir + win_offset*cos_dir;
uchar* WIN = win.data;
uchar* IMG = image.data;
for(int i = 0; i < win_size; i++, start_x += sin_dir, start_y += cos_dir)
{
float pixel_x = start_x;
float pixel_y = start_y;
for(int j = 0; j < win_size; j++, pixel_x += cos_dir, pixel_y -= sin_dir)
{
int x = std::min(std::max(cvRound(pixel_x), 0), image.cols-1);
int y = std::min(std::max(cvRound(pixel_y), 0), image.rows-1);
for (int c=0; c<3; c++) {
WIN[i*win_size*3 + j*3 + c] = IMG[y*image.step1() + x*3 + c];
}
}
}
return win;
}
Tôi không chắc chắn nếu quy mô là hoàn toàn OK, nhưng nó được lấy từ nguồn SURF và kết quả có liên quan đến tôi.
Các vấn đề liên quan
- 1. Vẽ hình chữ nhật xung quanh đối tượng được phát hiện sử dụng SURF
- 2. Hộp giới hạn hình chữ nhật xung quanh các đốm màu trong ảnh đơn sắc bằng cách sử dụng python
- 3. Làm thế nào để xoay đối tượng xung quanh một điểm bằng cách sử dụng quaternions?
- 4. Phát hiện đối tượng trong ảnh bằng tính năng SIFT/SURF
- 5. các tính năng SIFT đào tạo trong OpenCV
- 6. Lật xung quanh một div bằng cách sử dụng Javascript
- 7. opencv - theo dõi đối tượng bằng cách sử dụng tính năng phát hiện
- 8. Loại bỏ các điểm khóa SIFT ngoại vi trong hình ảnh di động bằng OpenCV
- 9. Cách tạo đối tượng Hình chữ nhật trong Java bằng cách sử dụng phương thức g.fillRect
- 10. Trích xuất hình chữ nhật từ đường viền OpenCV
- 11. Trích xuất hình ảnh phụ từ một hình ảnh bằng cách sử dụng C#
- 12. Phát hiện vùng sáng hình chữ nhật trong Hình ảnh bằng cách sử dụng OpenCv
- 13. Trích xuất bảng biểu tượng bằng cách sử dụng clang
- 14. Sift Extraction - opencv
- 15. OpenCV - Đối sánh đối tượng bằng cách sử dụng các mô tả SURF và BruteForceMatcher
- 16. Các tính năng Python và SIFT của OpenCV
- 17. Phát hiện biểu tượng bằng cách sử dụng OpenCV
- 18. Tìm hình chữ nhật không có góc bằng cách sử dụng opencv
- 19. Làm thế nào để có được xung quanh một lỗi 'NS_ERROR_ILLEGAL_VALUE' bằng cách sử dụng Ajax?
- 20. java xoay hình chữ nhật xung quanh trung tâm
- 21. So sánh các tính năng SIFT được lưu trữ trong cơ sở dữ liệu mysql
- 22. Làm thế nào để có được tọa độ x, y của các đối tượng được trích xuất trong javacv?
- 23. Trích xuất giá trị lang bằng cách sử dụng JavaScript
- 24. Làm thế nào để trích xuất đối tượng Verb đối tượng bằng cách sử dụng nlp java
- 25. Vẽ đường viền tròn xung quanh hình ảnh bằng Raphael
- 26. Làm cách nào để quấn văn bản xung quanh hình ảnh không phải hình chữ nhật?
- 27. Có lợi thế nào đối với _ever_ bằng cách sử dụng một trích dẫn duy nhất xung quanh một chuỗi trong Ruby/Rails không?
- 28. cách trích xuất các byte cụ thể từ một tệp bằng cách sử dụng unix
- 29. Trích xuất văn bản PDF bằng cách sử dụng iText
- 30. Làm phẳng mảng đối tượng vào một mảng đối tượng khác bằng cách sử dụng javascript
Thực ra tôi đang sử dụng thư viện SIFT của Robb Hess để phù hợp với đối tượng trong dự án của tôi và mã cho phù hợp với yêu cầu nhưng tôi muốn một hình chữ nhật quanh đối tượng phù hợp – Punit
Có thể liên kết này giúp bạn tốt hơn. Vẽ một hình chữ nhật là dễ dàng, chỉ cần cố gắng hiểu wgat họ đang làm và áp dụng cho homography H trong mã của bạn. http://nashruddin.com/OpenCV_Region_of_Interest_(ROI) –
Thnx Jav_rock mã này rất hữu ích, tôi có thể lấy phiên bản tài liệu của nó – Punit