android - 命令 .copyto 失败
问题描述
我是一名学生,我正在开发将扫描数独并解决它的应用程序。我正在拍照,而不是找到最大的轮廓。这就是工作。当我想在空垫子上提取最大的计数器(它有白色背景)时,问题就开始了,应用程序不显示应该的图片活动(在其他图像中)但它返回到我的主要活动. 我正在使用本教程进行提取:https ://bytefish.de/blog/extracting_contours_with_opencv/ 。
mat4=mat1; // mat 1 is current frame on camera
transpose(mat4, mat4);
flip(mat4, mat4, +1);
mat5=mat4;
Mat okraje = new Mat();
Mat hiearchy = new Mat();
Imgproc.cvtColor(mat5,mat5,Imgproc.COLOR_BGR2GRAY);
List<MatOfPoint> contourList = new ArrayList<MatOfPoint>();
Imgproc.Canny(mat5,okraje,80,100);
Imgproc.findContours(okraje,contourList,hiearchy,Imgproc.RETR_CCOMP, Imgproc.CHAIN_APPROX_SIMPLE); // TOPKA JEBNE PLNY STVOREC A KRATKO!!
for(int ab=0;ab < contourList.size(); ab++ ){
a = contourArea(contourList.get(ab),false);
if(a>largest_area){
b=ab;
largest_area = a;
largest_contour_index=ab;
bounding_rect=boundingRect(contourList.get(ab));
}
}
Mat len_sudkoku = new Mat();
len_sudkoku.create(mat5.rows(), mat5.cols(),CvType.CV_8UC3);
len_sudkoku.setTo(new Scalar(255,255,255));
Mat lskere = new Mat();
lskere.create(okraje.cols(), okraje.rows(), CvType.CV_8UC1);
Random r = new Random();
Imgproc.drawContours( lskere, contourList,largest_contour_index, new Scalar(r.nextInt(255), r.nextInt(255), r.nextInt(255)), -1);
mat5.copyTo(len_sudkoku,lskere); // pada to!!
Bitmap bm = Bitmap.createBitmap(len_sudkoku.cols(),len_sudkoku.rows(), Bitmap.Config.ARGB_8888);
Utils.matToBitmap(len_sudkoku,bm);
setContentView(R.layout.activity_fotka_ukaz);
ImageView IMW = findViewById(R.id.imageView);
IMW.setImageBitmap(bm);
我希望就像我在此处发布的教程中一样,其中一个人提取了一个苹果并将其放在另一个背景上。我注意到的是,当我使用命令时,应用程序返回到主要活动(它应该显示图像)
mat5.copyTo(len_sudkoku, lskere)
解决方案
好的,我解决了。问题不在于(显然)的命令复制,而在于不同垫子和位图的声明大小。问题是,在声明中,第一个输入有时是行和列,所以它崩溃了。现在我将大小添加到 Mat 层次结构和 okraje,并将 lskere.create(okraje.cols(), okraje.rows(), 编辑为 lskere.create(okraje.rows(), okraje.cols()..
推荐阅读
- pandas - 如何在 Python 中高效读取 CSV?
- javascript - React JS 中的严格上下文转义
- sql - 使用 Azure SQL 将不同的表列合并为一个
- vue.js - 如何从 localStorage 反应性地呈现 Markdown?
- javascript - 我可以使用 Google 表单 API 在我的 Angular 应用程序中创建新表单吗?
- sql - 如何在 where 子句中过滤 'YYYY-MM-DD' 格式的日期?
- maven - 带有自定义控件和自定义 StringProperty 的 Proguard
- reactjs - 使“serverSideTranslations”功能通用
- javascript - 是的日期验证 - 开始日期不能与结束日期相同
- python - 如果 __name__ == "__main__" 则模拟: