Android OpenCV错误
我是OpenCV的新手。我在Android Studio中集成了OpenCV 使用的OpenCV SDK版本为:3.4.0 Android Studio的版本为:3.0.1 我的项目结构如下: 在访问Imgproc库时,Canny函数正在运行其他函数,如HoughLines、cornerHarris,。。LineSegmentDetector类中的detect()方法都会引发同一类型的异常,我无法找出引发该异常的原因 我的代码:Android OpenCV错误,android,opencv,image-processing,java-native-interface,Android,Opencv,Image Processing,Java Native Interface,我是OpenCV的新手。我在Android Studio中集成了OpenCV 使用的OpenCV SDK版本为:3.4.0 Android Studio的版本为:3.0.1 我的项目结构如下: 在访问Imgproc库时,Canny函数正在运行其他函数,如HoughLines、cornerHarris,。。LineSegmentDetector类中的detect()方法都会引发同一类型的异常,我无法找出引发该异常的原因 我的代码: public class MainActivity extend
public class MainActivity extends AppCompatActivity {
static{ System.loadLibrary("opencv_java3"); }
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ImageView image=findViewById(R.id.image1);
ImageView image2=findViewById(R.id.image2);
Bitmap bitmap=BitmapFactory.decodeResource(getResources(),R.drawable.wall);
image.setImageBitmap(bitmap);
Mat imageMat=new Mat();
Utils.bitmapToMat(bitmap,imageMat);
Bitmap newBitmap=Bitmap.createBitmap(bitmap.getWidth(),bitmap.getHeight(), Bitmap.Config.ARGB_8888);
Mat lines=new Mat();
LineSegmentDetector lsd= Imgproc.createLineSegmentDetector(Imgproc.LSD_REFINE_STD,0.75,2,0.6,10,0.6,0.1,2);
lsd.detect(imageMat,lines);
//Imgproc.Canny(imageMat,lines,1,60,3,false);
//Imgproc.HoughLines(imageMat,lines,20,20,10);
//Imgproc.cornerHarris(imageMat,lines,2,3,0.04);
//Imgproc.GaussianBlur(imageMat,lines,new Size(3,4),2);
//Utils.matToBitmap(lines,newBitmap);
image2.setImageBitmap(newBitmap);}
}
堆栈跟踪错误:
02-26 17:51:54.845 18690-18690/com.example.bssakala.opencvsample E/cv::error():OpenCV错误:断言失败(!image.empty()&&image.type()=((0)和((1错误消息告诉您调用
detect
第416行:
CV_Assert(!image.empty() && image.type() == CV_8UC1);
这意味着:确保提供的输入图像不是空的,并且其类型是CV_8UC1,或者向调用者抛出一条丑陋的错误消息
因此,请确保您提供了一个正确的输入图像来检测,因为其他任何东西都不起作用
这也可以在OpenCV参考手册中找到
上面写着:
参数
_图像灰度(CV_8UC1)输入图像