OpenCV for Android中grabCut分割报错

代码:

 bit = BitmapFactory.decodeStream(getContentResolver().openInputStream(imageUri));

public void  MyGrabCut(){
        Mat src=new Mat();
        Mat gray=new Mat();
        Mat bg=new Mat();
        Mat fg=new Mat();
        Mat mask=new Mat();
        Utils.bitmapToMat(bit,src);
        Imgproc.cvtColor(src,gray,Imgproc.COLOR_RGBA2RGB);
        Rect rect=new Rect(20,30,100,100);
        mask.create(gray.size(), CvType.CV_8UC1);
        fg.create(gray.size(),CvType.CV_64FC1);
        bg.create(gray.size(),CvType.CV_64FC1);
        Imgproc.grabCut(gray,mask,rect,bg,fg,3,1);
    }

报了error: (-5) _model must have CV_64FC1 type, rows == 1 and cols == 13*componentsCount in function GMM::GMM,这个错误。
然后将

 fg.create(gray.size(),CvType.CV_64FC1);
 bg.create(gray.size(),CvType.CV_64FC1);

两句删除以后,就会报FATAL EXCEPTION: main
Process: com.example.administrator.myapplication, PID: 15958
CvException [org.opencv.core.CvException: cv::Exception: /build/master_pack-android/opencv/modules/imgproc/src/grabcut.cpp:380: error: (-215) !bgdSamples.empty() && !fgdSamples.empty() in function void initGMMs(const cv::Mat&, const cv::Mat&, GMM&, GMM&)
]

求问应该怎么解决???

1个回答

grabcut 有两种抠图方式。mask rect。传的参数也有 区别。
https://www.cnblogs.com/little-monkey/p/7598529.html
mask 中需要标明前景 和背景
c++代码
Mat mask(watershedImage.size(),CV_8UC1);
for( i = 0; i < watershedImage.rows; i++)
for( j = 0; j < watershedImage.cols; j++ )
{
if(watershedImage.at(i,j)!=0)
mask.at(i,j) = GC_PR_FGD;
else
mask.at(i,j) = GC_PR_BGD;
}

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
批量图像自动分割 grabcut+阈值分割 opencv
问题:白色等背景(幕布)下的批量图像,自动分割出前景物体,无须交互环境: ubuntu 16.04 + opencv3 + openmp + cmake**注意:具体分割效果可以自己调整腐蚀膨胀和grabcut中的阈值大小来优化。 本文章主要是用处理后的结果来重建物体,所以难以避免的是会保留一部分背景,以保证重建效果**1.使用阈值分割,提取目标物体大概位置//阈值分割,提取前景的大致轮廓
OpenCV GrabCut算法 物体分割(python语言)
import numpy as np import cv2 from matplotlib import pyplot as plt imgpath = 'G:/Python_code/OpenCVStudy/images/grabcut.jpg' img = cv2.imread(imgpath) # 预先绘制图片 fig = plt.figure() plt.subplot(121), p
图像分割之(五)OpenCV的GrabCut调用
在OpenCV的源码目录的samples的文件夹下,有grabCut的使用例程,请参考: opencv\samples\cpp\grabcut.cpp。 在这里给出最简单的调用grabcut #include #include #pragma comment(lib,"cv210d.lib") #pragma comment(lib,"cxcore210d.lib") #pragm
图像分割:Grabcut算法小程序
OpenCV中的GrabCutGrabCut是流行的图像分割算法之一,通过标记前景像素、相似色彩聚类、边界像素惩罚和迭代,寻找最优解。 本文用OpenCV实现的GrabCut算法,做了个小程序。至于该算法的详解可自行百度学习吧。 OpenCV中GrabCut算法函数原型:void grabCut(InputArray image, InputOutputArray mask, Rect rect
OpenCV学习笔记-图像分割之GrabCut
一、原理GrabCut是graph cut的改进版,是迭代的graph cut。该算法利用了图像中的纹理(颜色)信息和边界(反差)信息,只要小量的用户交互操作即可得到比较好的分割效果。计算原理参考:点击打开链接,点击打开链接在整个过程发什么了什么呢?1、用户输入一个矩形。矩形外的所有区域肯定是背景。矩形框内的东西是未知的。同样用户确定前景和背景的任何操作都不会被程序改变。2、计算机会对我们的输入图...
利用OpenCV的Grabcut()函数实现图像的前景与背景的分割-并对Grabcut()作详细介绍
利用OpenCV的Grabcut()函数实现图像的前景与背景的分割-并对Grabcut()作详细介绍
GrabCut in One Cut(基于图割算法grabcut的一次快速图像分割的OpenCV实现)----目前效果最好的图割
One cut in grabcut 本文针对交互式图像分割中的图割算法,主要想翻译一篇英文文献。不足之处请大家指正。   该方法使用少量的辅助节点(这个辅助节点我没看出来代码在哪块提现的,还望高手指点)来实现高效率的分割,传统的基于梯度下降的方法的分割方法,如grabcut,可能会收敛到局部极值(在图像较大时),而实验结果表明,对于图像比较复杂的图像如果我们使用足够过的辅助
OpenCV 的 GrabCut 可运行代码 及实例
OpenCV中GrabCut 的可运行代码 #include "opencv2/highgui/highgui.hpp" #include "opencv2/imgproc/imgproc.hpp" #include using namespace std; using namespace cv; static void help() { cout << "\nThis pro
grabcut分割算法使用例程
转载地址:http://www.cnblogs.com/tornadomeet/archive/2012/11/09/2763271.html
grabcut in one-cut 一种好用快速的图像分割算法
      2013年iCCV上的这篇论文,提出了一种快速的基于简单交互的分割算法,本篇博文是对该论文的解读。Tang M, Gorelick L, Veksler O, et al. GrabCut inOne Cut[C]// IEEE International Conference on Computer Vision. IEEE ComputerSociety, 2013:1769-17...
python opencv入门 使用 GrabCut 交互式提取前景(30)
内容来自OpenCV-Python Tutorials 自己翻译整理目标:GrabCut算法原理与应用 创建交互式程序完成前景提取原理: 首先用矩形将要选择的前景区域选定,其中前景区域应该完全包含在矩形框当中。然后算法进行迭代式分割,知道达到效果最佳。但是有时分割结果不好,例如前景当成背景,背景当成前景。测试需要用户修改。用户只需要在非前景区域用鼠标划一下即可。 如文档中的图片,运动员和足球被
图像分割Grabcut算法-GUI程序-python实现
程序用python编写,使用GUI库wxpython 需要预先安好各种库,运行速度取决于cpu。。。(逃
【图像识别】GrabCut的Android实现
除了用神经网络,做图像识别最重要的是进行图片特征提取。包括:纹理特征、边缘特征、颜色特征、形状特征等等。每一种特征又有不同的实现方式和效果。比如形状特征可以通过提取边缘的斜率,也可以通过其外接矩形的长宽比。目前前景提取没有十分完美的算法。一种方法不可能适用于所有复杂的环境。所以采用了人机交互的grabcut算法。通过人为制定一些背景信息,大大增加了前景提取的准确性,为之后的特征提取或降维奠定基础。本
GrabCut图像分割
GrabCut是微软研究院的一个课题,主要功能是分割和抠图。个人理解它的卖点在于: (1)你只需要在目标外面画一个框,把目标框住,它就可以完成良好的分割: (2)如果增加额外的用户交互(由用户指定一些像素属于目标),那么效果就可以更完美: (3)它的Border Matting技术会使目标分割边界更加自然和perfect:        当然了,它也有不完美的地方,一是没有任何
Opencv 使用 GrabCut 算法进行交互式前景提取
GrabCut 算法原理,使用 GrabCut 算法提取图像的前景 创建一个交互是程序完成前景提取原理
【图像处理】图像分割之(一~四)GraphCut,GrabCut函数使用和源码解读(OpenCV)
图像分割之(一)概述 http://blog.csdn.net/zouxy09         所谓图像分割指的是根据灰度、颜色、纹理和形状等特征把图像划分成若干互不交迭的区域,并使这些特征在同一区域内呈现出相似性,而在不同区域间呈现出明显的差异性。我们先对目前主要的图像分割方法做个概述,后面再对个别方法做详细的了解和学习。 1、基于阈值的分割方法       阈值法的基本
【OpenCV学习笔记 023】两种图像分割方法比较
此次研究两种图像分割法,分别是基于形态学的分水岭算法和基于图割理论的GrabCut算法。OpenCV均提供了两张算法或其变种。鉴于研究所需,记录一些知识点,开发平台为OpenCV2.4.9+Qt5.3.2。 一、使用分水岭算法进行图像分割 分水岭变换是一种常用的图像处理算法,在网上很容易搜到详细的原理分析。简单来说,这是一种基于拓扑理论的数学形态学的图像分割方法,其基本思想是把图像看作是测地学
图像分割之(六)CUDA实现GrabCut
CUDA提供了GrabCut测试案例: NVIDIA Corporation\CUDA Samples\v5.0\7_CUDALibraries\grabcutNPP 原图: 结果图: https://developer.nvidia.com/npp提供了详细的说明
Grabcuts图割算法
原文地址:http://blog.csdn.net/wangyaninglm/article/details/44151213 1.绪论 图切割算法是组合图论的经典算法之一。近年来,许多学者将其应用到图像和视频分割中,取得了很好的效果。本文简单介绍了图切算法和交互式图像分割技术,以及图切算法在交互式图像分割中的应用。   图像分割指图像分成各具特性的区域并提取出感兴趣目标的技术
GrabCut算法提取前景物体
#include #include #include #include using namespace std; using namespace cv; int main() { Mat image=imread("d:/test/opencv/group.jpg"); namedWindow("Image"); imshow("Image",image); Rect rectang
Opencv图像识别从零到精通(27)---grabcut
图割graph cuts ----grad cut        Graph Cuts算法是用来确定网络流的最小分割,即寻找一个容量最小的边的集合,去掉这个集合中的所有边就可以阻挡这个网络了。需要注意的是,通常所说的Graph Cuts算法是指的采用最大流-最小分割来优化的模型,其它的Graph Cutting算法一般用graphpartitioning这个名词来代替。   首先还得先
opencv-使用GrabCut算法进行交互式前景提取
参考: 1、http://docs.opencv.org/3.3.0/  官方文档api 2、http://docs.opencv.org/3.3.0/d6/d00/tutorial_py_root.html 官方英文教程 3、https://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_tutorials.h
OpenCV图像分割实战C++(一)Grabcut抠图与证件照背景替换
Grabcut抠图 步骤: 输入原图像 矩形输入 开始分类 GMM描述 GMM训练分类 Graph Cut分类 不断迭代直到收敛分类 API: void grabCut( InputArray img, // 待分割图像,8bit,3通道 // 输入输出参数,保存处理后的结果,8bit单通道掩码(与img同rows cols),mask元素值只能为 GC_BGD, GC_FGD, GC...
关于彩色图像的背景分割Crab Cut 算法OpenCV实现-----————效果不错,但是运行时间太慢了。。。
看的一篇博客,原文链接: http://blog.sina.com.cn/s/blog_1584387c90102x5fu.html图像分割一直是图像处理中一项棘手的问题。图像分割算法从大的方面讲可以分为两类:     1   全自动图像分割:一般采用聚类算法来最大化前景与背景的差。     2   用户互动式图像分割:用户提供前景和背景的种子,然后对前景背景建立概率分布模型。       而Gr...
OpenCV3.0 Examples学习笔记(10)-grabcut.cpp-grabcut函数实现人机交互高效分割图像前景背景
这个系列的目的是通过对OpenCV示例,进一步了解OpenCV函数的使用,不涉及具体原理。 目录 简介 Example运行截图 Example分析 Example代码 简介 本文记录了对OpenCV示例grabcut.cpp的分析。 资料地址:http://docs.opencv.org/3.0.0/de/dd0/grabcut_8cpp
OpenCV(EmguCV)2.1新特性介绍之图像分割GrabCut
http://www.oschina.net/question/54100_36518 作者:王先荣      前不久OpenCV和EmguCV相继发布了2.1版,增加了一些新的特性,本文关注的是其中的图像分割部分——GrabCut。GrabCut主要用于图像编辑中的抠图,作用跟Photoshop中的魔法棒、套索类似,但是更加强大。由于没有GrabCut的文档,探索具体的用法花费了不少时间和精
grabcut图像分割的原理简单介绍
grabcut采用graph cut图分割和最大流技术的一种交互式图像分割技术,不吹牛逼了,接触opencv 10来天,就这点墨水了,直接言归正传,在学习了https://blog.csdn.net/zouxy09/article/details/8534954,大牛的文章后,有点感悟,所以记录下来,若有人看见了,就当做好玩的吧。首先来介绍一下Graph cut ,图(graph)的分割模型图下图...
前景提取、去除背景(selectROI+Grabcut)
前几天看到别人数学建模题目是前景提取,想到很早之前试过的grabcut,所以来放个demo,2333 惯例先放效果   //必须是三通道图片 两个函数: 1.selectROI 【需要配置Opencv的contribute模块】、、主要作用是获取矩形框,可自行写其他 第一个参数为输入图片,第二个参数为是否从中心开始选取矩形 2.grabCut函数 //输入必须是三通道
opencv之GrabCut函数使用和源码解读
图像分割之(四)OpenCV的GrabCut函数使用和源码解读 zouxy09@qq.com http://blog.csdn.net/zouxy09         上一文对GrabCut做了一个了解。OpenCV中的GrabCut算法是依据《"GrabCut" - Interactive Foreground Extraction using Iterated Graph Cuts
opencv教程(基于python)----grabcut前景提取
grabcut算法是微软的一个研究院提出的。算法在提取前景的操作中需要很少的人机交互,结果非常好。 通俗的说,一开始用户用户需要用一个矩形将前景区域框住。然后使用算法迭代分割。但有时分割的结构不够理想,会把前景和背景弄错,这时需要我们人为的修正了。 具体的原理 用户输入一个矩形,矩形外的区域一定是背景,矩形内的东西是未知的 计算机会对我们数据的图像做一个初始化的标记,她会标记前景和背景像素...
Python 使用Opencv的GrabCut 算法实现前景检测以及分水岭算法实现图像分割
欢迎加入学习交流QQ群:657341423 前景检测在平面设计来说,称之为抠图,,OpenCV的抠图是由grabCut函数实现。grabCut是一种算法,算法原理说明如下: 函数原型: grabCut(img, mask, rect, bgdModel, fgdModel, iterCount, mode=None) img - 输入图像 mask-掩模图像,用来确定那些区域...
grabcut分割算法
在OpenCV中,实现了grabcut分割算法,该算法可以方便的分割出前景图像,操作简单,而且分割的效果很好。
抠图-grabCut算法+hog检测
GrabCut是微软研究院的一个课题,主要功能是分割和抠图。 grabcut是在graph cut基础上改进的一种图像分割算法,它同样是基于图割理论的。 由于背景的复杂度不同所以,grabcut算法抠图的准确性也有很大的差异,所以我使用了hog检测人物再使用grabcut算法抠图,增加了准确性。这里我是在视频中进行抠图。 代码:#include<opencv2\opencv.hpp> #inc
GrabCut函数使用简介
 本文转自:http://blog.csdn.net/lcy9819/article/details/6554864 GrabCut简介     OpenCV中的GrabCut算法是依据《"GrabCut" - Interactive Foreground Extraction using Iterated Graph Cuts》这篇文章来实现的。该算法利用了图像中的纹理(颜色)信息和边
opencv-使用GrabCut提取背景图像
参考: 1、https://stackoverflow.com/questions/17698431/extracting-background-image-using-grabcut 2、https://stackoverflow.com/questions/15536222/opencv-grabcut-algorithm-example-not-working1、提取前景图像c++#inc
多张图片的切割MATLAB程序 grabcut 图割
自己写的多张图片的切割MATLAB程序,基于图割的程序,效果很好,已经验证过
opencv使用GrabCut算法提取前景物体
void grabCut(InputArray image, InputOutputArray mask, Rect rect, InputOutputArray bgdModel, InputOutputArray fgdModel, int iterCount, int mode) **********参数说明**************** image –输入8位3通道图像
(三)OpenCV中的图像处理之霍夫变换、分水岭算法以及GrabCut算法
注释:本文翻译自OpenCV3.0.0 document-&amp;gt;OpenCV-Python Tutorials,包括对原文档种错误代码的纠正3.13 霍夫变换第一节:霍夫线变换(Hough Line Transform)1.目标理解霍夫变换的概念学习如何使用霍夫变换检测图像中的行学习一下函数:cv2.HoughLines(),cv2.HoughLinesP()2.理论如果可以用数学形式表示该形状...
One cut in grabcut的OpenCV实现代码以及工程
说明: http://blog.csdn.net/wangyaninglm/article/details/50074613 One cut in grabcut(grabcut算法的非迭代实现?) 本文针对交互式图像分割中的图割算法,主要想翻译一篇英文文献。不足之处请大家指正。 这是博主近期看到的效果最好,实现最简单,运算时间最短的交互式图割算法,而且由于是发明图割算法实验室原班人马的文章和代码,所以非常值得研究。
OpenCv GrabCut抠图程序
OpenCv中用GrabCut抠图,不过速度有点慢.
相关热词 c# 增加元素 c#控制台简单加法 c# 服务端框架 c# 判断事件是否注册 c#中is和has c# udp 连接超时 c#词典 c#实现排列组合 c# oss 上传 c#判断输入的是否为ip