2013-03-15 45 views
9

Tôi đang cố gắng để có được một khu vực của một hình ảnh (ROI) bằng cách sử dụng python opencv. Phiên bản opencv được sử dụng là 2.4.3. Tuy nhiên khi tôi cố gắng gọi APIRegion of interest opencv python

cv2.SetImageROI 

nó sẽ trả về cho tôi những lỗi

AttributeError: 'module' object has no attribute 'SetImageROI' 

Cũng trong ngày kiểm tra các tài liệu có vẻ như để gợi ý api đây là một chức năng di sản python. http://docs.opencv.org/2.4.3/search.html?q=setimageroi

Tôi không chắc chắn về cách lấy ROI bằng phiên bản hiện tại của opencv trong python. Có thể một số xin vui lòng đề nghị làm thế nào để đi về điều này?

Cảm ơn

Trả lời

21

Okay, On phân tích sâu hơn nhận ra rằng CV2 vì nó đã và đang hỗ trợ cấu trúc mảng NumPy, không còn bất cứ nhu cầu về một API, toàn bộ hình ảnh có thể được thao tác trong mảng chính nó. ví dụ:

img = cv2.imread('image.png') 
img = img[c1:c1+25,r1:r1+25] 

Đây c1 là vị trí điểm ảnh cột bên trái và r1 là vị trí hàng tương ứng. Và bây giờ img có hình ảnh được chỉ định trong các pixel làm ROI.

EDIT: Rất độc đáo giải thích ở đây, How to copy a image region using opencv in python?

+0

Xem thêm câu trả lời của @Abid Rahman K tại đây: http://stackoverflow.com/questions/9084609/how-to-copy-a-image-region-using-opencv-in-python –

+0

Điều đó có vẻ toàn diện hơn trong giải thích . Cảm ơn –

+1

@AjayNair Làm thế nào bạn sẽ cắt nếu khu vực quan tâm là một hình chữ nhật xoay? – annena

3

Như đã đề cập trong documentation, và liên quan đến thông báo lỗi bạn có, bạn thay vì cần phải nhập khẩu các mô-đun thích hợp và sau đó gọi SetImageROI() phương pháp:

import cv 
cv.SetImageROI(imag, rect)