我试图通过点击屏幕来获得我的ROI。这是发生错误的部分。
@Override
public Mat onCameraFrame(CvCameraViewFrame inputFrame) {
Mat rgba = inputFrame.rgba();
Mat roi_mat = new Mat();
if (startX!=0 && endX!=0){
//Toast.makeText(this, "start:"+start_point+" end:"+end_point, Toast.LENGTH_SHORT).show();
Core.rectangle(rgba,start_point,end_point,border_colour,0,8, 0 );
roi_rect = new Rect(startX,startY,(endX-startX),(endY-startY));
Mat roi_mat_ref = new Mat(rgba,roi_rect);
roi_mat_ref.copyTo(roi_mat);
//rgba.copyTo(roi_mat);
}
return rgba;
}
运行应用程序时,一切正常。但是当我想得到ROI的时候,它会显示出一个错误。
10-04 20:19:18.754 6794-6859/com.example.tew.roi E/cv::OpenCV ():断言失败(0 <= _rowRange.start & _rowRange.start <= _rowRange.end & _rowRange.end <= m.rows)在cv::Mat::Mat(const cv::Mat&,const cv::Range&,const cv::Range&)中,文件<=行284 10-04 20:19:18.755 6794-6859/com.example.tew.roi E/org.opencv.core.mat: Mat::n_1Mat__JIIII() Mat::n_1Mat__JIIII()捕捉cv::Exception:<= _rowRange.start & _rowRange.start <= _rowRange.end && _rowRange.end <= m.rows in函数cv::Mat:Mat(const cv::Mat&,const cv::Range&,const cv::Range&) 10-04 20:19:18.755 6794-6859/com.example.tew.roi W/dalvikvm: threadid=11:线程退出时没有异常(group=0x40fbf258) 10-04 20:19:18.756 6794-6859/com.example.tew.roi E/AndroidRuntime:致命异常:线程-3348 /home/reports/ci/slave_desktop/50-SDK/opencv/modules/core/src/matrix.cpp:284:错误:(-215) 0 <= _rowRange.start & _rowRange.start <= _rowRange.end && _rowRange.end <= m.rows函数cv::Mat::Mat(const cv::Mat&,const cv::Range&,const cv::Range&) 在org.opencv.core.Mat.n_Mat(本地方法) 在org.opencv.core.Mat.(Mat.java:676) 在com.example.tew.roi.MainActivity.onCameraFrame(MainActivity.java:154) 在org.opencv.android.CameraBridgeViewBase.deliverAndDrawFrame(CameraBridgeViewBase.java:387) 在org.opencv.android.JavaCameraView$CameraWorker.run(JavaCameraView.java:346) 在java.lang.Thread.run(Thread.java:856)
发布于 2016-01-17 18:47:41
调整EndX值似乎对我有效。你可以试着在把它发送给马特之前把它减少一点。
https://stackoverflow.com/questions/32933545
复制相似问题