2013-03-04 36 views
7

Tôi đã đăng một phần nhỏ mã của mình, khiến tôi tiếp tục nhận được một lỗi lạ mà tôi dường như không thể loại bỏ được. Vấn đề có thể được tìm thấy trên dòng này: Imgproc.GaussianBlur (mGray, mGray, Kích thước mới (5,5), 2,2, 2);Eclipse đưa ra lỗi khi sử dụng GaussianBlur với OpenCV cho Android

public Mat onCameraFrame(Mat inputFrame) { 
    mGray = new Mat(); 
    Imgproc.cvtColor(mRgba, mGray, Imgproc.COLOR_RGBA2GRAY);  
    // doing a gaussian blur prevents getting a lot of false hits 
    Imgproc.GaussianBlur(mGray, mGray, new Size (5,5), 2.2, 2); 
    // Values 3 and 4are the LowerThreshold and UpperThreshold. 
    Imgproc.Canny(inputFrame, mIntermediateMat, 80, 100); 
    Imgproc.cvtColor(mIntermediateMat,mRgba, Imgproc.COLOR_GRAY2BGRA, 4); 
    return mIntermediateMat; 
} 

Các lỗi tôi nhận được từ Eclipse là:

The method GaussianBlur(Mat,Mat,Size,double,double) in 
the type imgproc is not applicable for the arguments (Mat,Mat,CameraSize,int,int) 

Tôi đang sử dụng một phiên bản chỉnh sửa của tutorial3 camera kiểm soát (OpenCV cho Android phiên bản 2.4.4), nơi sản lượng được hiển thị như Canny của phát hiện cạnh. Tôi cần GaussianBlur để loại bỏ một số chi tiết nhỏ hơn. Có ai biết chính xác những gì là sai trong dòng mã này?

Trả lời

2

Tôi đã nhận được giải pháp này từ Alexander Smorkalov và đã hoạt động. Chỉ cần thay đổi Imgproc.GaussianBlur (mGray, mGray, Kích thước mới (5,5), 2,2, 2); tới Imgproc.GaussianBlur (mGray, mGray, mới org.opencv.core.Size (5,5), 2,2, 2);

4

Mã này hoạt động tốt. Chỉ cần sắp xếp lại các thông số như bạn cần.

Imgproc.GaussianBlur(mGray, mGray, new Size(15,15),50); 

Kích thước có nghĩa là bạn sẽ sử dụng nó làm kích thước hạt nhân. Kích thước hạt nhân cũng phải là lẻ! 50 cho thấy độ lệch chuẩn của hạt nhân theo hướng X.

Formula: sigma = 0.3 * ((kSize-1)*0.5 - 1) + 0.8

Đây sigma được truyền 50 để sigmaX = sigmaY = 50

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