2013-01-21 37 views
5

Tôi đang cố gắng cắt ảnh ra khỏi luồng video bằng OpenCV for iOS. Tôi không cố gắng làm bất cứ điều gì ưa thích, chỉ cần cắt hình ảnh và hiển thị nó. Tôi đã thử thisthis, dường như không hoạt động đối với tôi. Như là một phương pháp đại biểu, tôi nhận được hiện tại cv :: Mat hình ảnh trôi qua, vì vậy tất cả tôi cần là mã sẽ tạo ra hiệu ứng cây trồng.Cắt ảnh Mat trong OpenCV 2.4.3 (iOS)

Tôi có thể làm điều gì đó phức tạp như this nếu cần, nhưng tôi chỉ cần một cây trồng hình chữ nhật, vì vậy tôi nghĩ rằng đó là một cách dễ dàng hơn. Tôi chỉ không hiểu tại sao việc thiết lập ROI không hiệu quả với tôi!

cv::Rect myROI(10, 10, 100, 100); 
cv::Mat croppedImage = src(myROI); 

src.copyTo(croppedImage); 


[displayView setImage:[UIImage imageWithCVMat:src]]; 

^^^ không làm việc, chỉ hiển thị ảnh gốc

+0

Xin chào, tôi đang gặp phải vấn đề tương tự. Bạn có thể vui lòng xem bài đăng của tôi http://stackoverflow.com/questions/14756505/croping-an-image-in-ios-uisng-opencv-face-detect – 2vision2

Trả lời

21

Vấn đề trong mã của bạn là bằng cách sao chép hình ảnh src bạn sao chép toàn bộ hình ảnh với những hình ảnh được cắt. Có hai khả năng:

1 - Không sao chép dữ liệu. Nó giống như bạn đã làm. Nhưng không có bước thứ hai. Trong trường hợp đó croppedImage không phải là bản sao thực, nó chỉ đến dữ liệu được phân bổ trong src .:

cv::Mat croppedImage = src(myRoi); 

2 - Với sao chép dữ liệu.

cv::Mat croppedImage; 
cv::Mat(src, myRoi).copyTo(croppedImage) 
+1

Tôi đã thử đề xuất đầu tiên của bạn trước đây và khi tôi hiển thị nó, nó đã rất hơi say lên tìm kiếm (loại trông giống như tv tĩnh). Phương pháp thứ hai bạn đề cập đã làm việc cho tôi, cảm ơn! – Jameo

+2

@Jameo phương pháp hiển thị của bạn có thể giả định rằng dữ liệu liên tục không đúng bằng phương pháp đầu tiên. – Hammer

+0

Đề nghị thứ hai làm việc cho tôi trong khi đề xuất thứ nhất thất bại. – jarora

Các vấn đề liên quan