OpenCV Android:在新Mat中定义并保存ROI(OpenCV Android: Define and save ROI in new Mat)

我正在尝试将我的图像的一部分切割(裁剪)到另一个,因此它可以单独处理。 我找到了轮廓,现在试图在新Mat中保存每个轮廓,但它给出了错误

Mat crop;

Imgproc.findContours(m, contours, new Mat() ,Imgproc.RETR_EXTERNAL , Imgproc.CHAIN_APPROX_SIMPLE);

for(int i=0; i

{

Rect rect = Imgproc.boundingRect(contours.get(i));

crop = m.submat(rect);

}

Utils.matToBitmap(crop, bm);

ImageView iv = (ImageView) findViewById(R.id.imageView1);

iv.setImageBitmap(bm);

这里是我保存图像的Mat

错误:

I am trying to slice (crop) part of my image to another so it can be worked on separately. I have found contours and now trying to save every contour in new Mat but it is giving error

Mat crop;

Imgproc.findContours(m, contours, new Mat() ,Imgproc.RETR_EXTERNAL , Imgproc.CHAIN_APPROX_SIMPLE);

for(int i=0; i

{

Rect rect = Imgproc.boundingRect(contours.get(i));

crop = m.submat(rect);

}

Utils.matToBitmap(crop, bm);

ImageView iv = (ImageView) findViewById(R.id.imageView1);

iv.setImageBitmap(bm);

Here m is my Mat where image is saved

Error:

原文:https://stackoverflow.com/questions/29365064

2019-11-23 22:11

满意答案

在这种情况下我总是做的是使用带有rect的构造函数创建一个新的mat:

Mat cropped = new Mat(mOriginal, boudingRect);

编辑:

您的位图也应该具有相同的大小:

bm = Bitmap.createBitmap(crop.size().width,crop.size().height, Bitmap.Config.ARGB_8888);

What I always do in this situation is to create a new mat using the constructor with a rect:

Mat cropped = new Mat(mOriginal, boudingRect);

Edit:

Your bitmap should also have the same size:

bm = Bitmap.createBitmap(crop.size().width,crop.size().height, Bitmap.Config.ARGB_8888);

2015-03-31

相关问答

我发现这样做的最好方法是获取ROI范围内的部分,然后计算ROI每边(顶部/底部/左/右)的边界数量,然后使用copyMakeBorder用于填充每侧的黑色边框。 它运作得很好。 它现在看起来像这样: Mat getPaddedROI(const Mat &input, int top_left_x, int top_left_y, int width, int height, Scalar paddingColor) {

int bottom_right_x = top_left_x + ...

Android的OpenCV(以及新的Java API)有自己的方式来创建投资回报率。 你所要做的就是调用Mat对象的子方法。 如果我没有弄错,调用submat不会创建该图像区域的副本,如果您想要副本,您可以在submat上使用copyTo来实现该目的。 Mat roi = inputFrame.submat(rowStart, rowEnd, colStart, colEnd);

你可以通过3种不同的方式调用submat,查看链接了解更多细节: submat(int rowStart,int ...

你只需要调用copyTo : void SaveROICPP(const CStringA& inputFile, const CStringA& outputFile)

{

if (ATLPath::FileExists(inputFile))

{

cv::Mat imgInput = cv::imread(inputFile.GetString());

if (imgInput.data != NULL)

{

...

我在最近提出的问题中描述了我设法找到的最快的方法。 您可以在我在下面的问题中写的答案中找到提取图像的方法。 问题是你在onPreviewFrame()获得的图像是NV21。 收到此图像后,您可能需要将其转换为RGB(取决于您想要实现的内容;这也在我之前给您的答案中完成)。 Seems quite inefficient but it works for me (for now): //get the camera parameters

Camera.Parameters parameters = ...

图像的下1/4是Rect(0,180,320,60) 。 它不是Rect(0,180, 320, 240)也不是Rect(0,0,320,60) 。 Lower 1/4 of your image is Rect(0,180,320,60). It is not Rect(0,180, 320, 240) nor it is Rect(0,0,320,60).

正如@Miki提到的那样,问题在于类型。 现在它可以工作,但是在我的情况下只有Mat尺寸大约200 x 40 000,如果它更大,我有outOfMemory例外...... String val = " ";

val = sharedPref.getString("key", " ");

// empty SharedPreferences

if ( ! val.equals(" ")) {

// ...

以下代码可以在此处找到,甚至可以在图像上使用位掩码设置循环ROI。 #include "cv.h"

#include "highgui.h"

int main(int argc, char** argv)

{

IplImage* src, * res, * roi;

/* usage: */

if (argc < 2)

{

fprintf(stderr, "Usage: %s \n", arg...

你得到了图像之外的矩形。 这是因为for循环中的错误条件。 使用: for (int y = 0; y <= (height - image_height); y += image_height)

{

for (int x = 0; x <= (width - image_width); x += image_width)

{

Rect rect = Rect(x, y, image_width, image_height);

sma...

主要的问题是,你不能有一个图像,部分是3chan / rgb,部分是1chan / grey。 我的解决方案是,在第一个位置处理roi的副本,然后将其转换回rgb并将其粘贴到原始图像中。 img = imread("M:/Desktop/PsEyeRight.jpg", CV_LOAD_IMAGE_COLOR); // original

Mat roi(img, Rect(Point(205, 72), Point(419,285)));

Mat work = roi.clone();

cvtCo...

在这种情况下我总是做的是使用带有rect的构造函数创建一个新的mat: Mat cropped = new Mat(mOriginal, boudingRect);

编辑: 您的位图也应该具有相同的大小: bm = Bitmap.createBitmap(crop.size().width,crop.size().height, Bitmap.Config.ARGB_8888);

What I always do in this situation is to create a new mat...

相关文章

请问在android应用中,能不能加载指定目录下的布局文件,比如:从服务器上下载一个布局文件存放在SD

...

网上有很多android开发环境的教程,但都是过时或者不实用的,还是官方的教程靠谱,android开发

...

李刚编著的《疯狂Android讲义》全面地介绍了Android应用开发的相关知识,全书内容覆盖了And

...

Developers, build mobile Android apps using Android

...

探究Android的多分辨率支持以及各种类型图标尺寸大小 - CSDN 各种数字提醒控件-Androi

...

中文名: android 开发书籍 发行日期: 2010年 文字语言: 英文 简介:

...

先上效果图: 就是一个类似微信qq那种item的shape。 即时上代码,少废话。 以下文件均为dra

...

请问下,ophone sdk对应的android版本是几呢?Android开发的应用能否在ophone

...

柚子园项目搁置后,半年多时间里都在开发微信公众平台和在公司实习,用的都是python,django,b

...

上周有个朋友给建议说讲讲换肤吧,真巧这周公司的工作安排也有这个需求,换的地方之多之繁,让人伤神死了。正

...

最新问答

如果启用了复制处理程序,请确保将其置于其中一个安全角色之后。 我见过人们做的另一件事是在不同的端口上运行admin。 最好在需要auth的页面上使用SSL,这样你就不会发送明确的密码,因此管理和复制将发生在8443上,而常规查询将在8080上发生。 如果您要签署自己的证书,请查看此有用的SO页面: 如何在特定连接上使用不同的证书? I didn't know that /admin was the context for SOLR admin because /admin does not re

第一:在您的样本中,您有: 但是你在询问 //td[@class=‘CarMiniProfile-TableHeader’] (注意TableHeader中的大写'T')。 xpath区分大小写。 第二:通过查询// td [@ class ='CarMiniProfile-TableHeader'] / td,你暗示你在外部td中有一个'td'元素,而它们是兄弟姐妹。 有很多方法可以在这里获得制作和模型

这是你的答案: http://jsfiddle.net/gPsdk/40/ .preloader-container { position: absolute; top: 0px; right: 0px; bottom: 0px; left: 0px; background: #FFFFFF; z-index: 5; opacity: 1; -webkit-transition: all 500ms ease-out;

问题是,在启用Outlook库引用的情况下, olMailItem是一个保留常量,我认为当您将Dim olMailItem as Outlook.MailItem ,这不是问题,但是尝试设置变量会导致问题。 以下是完整的解释: 您已将olMailItem声明为对象变量。 在赋值语句的右侧,在将其值设置为对象的实例之前,您将引用此Object 。 这基本上是一个递归错误,因为你有对象试图自己分配自己。 还有另一个潜在的错误,如果之前已经分配了olMailItem ,这个语句会引发另一个错误(可能是

我建议使用wireshark http://www.wireshark.org/通过记录(“捕获”)设备可以看到的网络流量副本来“监听”网络上发生的对话。 当您开始捕获时,数据量似乎过大,但如果您能够发现任何看起来像您的SOAP消息的片段(应该很容易发现),那么您可以通过右键单击并选择来快速过滤到该对话'关注TCP Stream'。 然后,您可以在弹出窗口中查看您编写的SOAP服务与Silverlight客户端之间的整个对话。 如果一切正常,请关闭弹出窗口。 作为一个额外的好处,wireshar

Android默认情况下不提供TextView的合理结果。 您可以使用以下库并实现适当的aligntment。 https://github.com/navabi/JustifiedTextView Android Does not provide Justified aligntment of TextView By default. You can use following library and achieve proper aligntment. https://github.com/

你的代码适合我: class apples { public static void main(String args[]) { System.out.println("Hello World!"); } } 我将它下载到c:\ temp \ apples.java。 以下是我编译和运行的方式: C:\temp>javac -cp . apples.java C:\temp>dir apples Volume in drive C is HP_PAV

12个十六进制数字(带前导0x)表示48位。 那是256 TB的虚拟地址空间。 在AMD64上阅读wiki(我假设你在上面,对吗?)架构http://en.wikipedia.org/wiki/X86-64 12 hex digits (with leading 0x) mean 48 bits. That is 256 TB of virtual address space. Read wiki on AMD64 (I assume that you are on it, right?) ar

这将取决于你想要的。 对象有两种属性:类属性和实例属性。 类属性 类属性对于类的每个实例都是相同的对象。 class MyClass: class_attribute = [] 这里已经为类定义了MyClass.class_attribute ,您可以使用它。 如果您创建MyClass实例,则每个实例都可以访问相同的class_attribute 。 实例属性 instance属性仅在创建实例时可用,并且对于类的每个实例都是唯一的。 您只能在实例上使用它们。 在方法__init__中定

mat opencv 修改roi_OpenCV Android:在新Mat中定义并保存ROI(OpenCV Android: Define and save ROI in new Mat)...相关推荐

  1. mat opencv 修改roi_OpenCV中如何提取不规则ROI区域

    点击上方"计算机视觉life",选择"星标" 快速获得最新干货 什么是ROI ROI是英文Region Of Interest的三个首字母缩写,很多时候我们对图 ...

  2. Android在string.xml中定义html文档并加载显示,以及拦截WebView链接事件

    一.如何在string.xml中定义html文档 首先最好自己在外部新建一个html文件,然后开始写自己的内容.并且在浏览器中预览效果. 首先预先编写一个简单的html文档: <html> ...

  3. android webview onkeydown,WebView中的OnKeyDown事件未处理 - Android

    我无法实现在WebView中的Android上调用Back按钮.我试着用OnKeyDown,OnKey,OnBackPressed 我当前的代码如下:WebView中的OnKeyDown事件未处理 - ...

  4. 小米Android N新功能,快升级牛轧糖 小米Android N支持汇总

    [PChome 手机频道资讯报道]小米目前的MIUI系统版本已经升级到MIUI 8.2,不久之后MIUI 9也将正式与我们见面.小米在稳步推进MIUI版本的同时,也没有忘记安卓底层版本的更新,根据MI ...

  5. 魅族新系统android o,Android O新特性 原来魅族Flyme6早已实现

    原标题:Android O新特性 原来魅族Flyme6早已实现 在Android N系统发布一年之后,谷歌3月22日又推出了新一代的 Android O 开发者预览版.在Android O的开发者预览 ...

  6. android更新新应用_如何将应用转移到新的Android设备

    android更新新应用 Ben Stockton 本·斯托克顿 A new Android device means transferring all of your content, includ ...

  7. android bitmap着色,android开发 替换bitmap中的颜色值

    /** * 将bitmap中的某种颜色值替换成新的颜色 * @param bitmap * @param oldColor * @param newColor * @return */ public ...

  8. 【Android】Android Studio 1.5+ 中混合调试Native和Java代码

    [Android]Android Studio 1.5+ 中调试Native和Java代码 Android Studio 1.5+表示Android Studio 1.5版本以及以上. 网上大部分中文 ...

  9. OpenCV使用cv :: CascadeClassifier类检测视频流中的对象的实例(附完整代码)

    Open使用cv :: CascadeClassifier类检测视频流中的对象的实例 OpenCV使用cv :: CascadeClassifier类检测视频流中的对象的实例 OpenCV使用cv : ...

最新文章

  1. setstate是同步还是异步_【vert.x准备篇1】同步和异步,阻塞和非阻塞概念澄清
  2. win设置计算机网络,Win10怎么修改网络类型,Win10网络类型怎么设置?
  3. python把文字矢量化_这个python函数可以被矢量化吗?
  4. SpringBoot+Vue使用Get请求时提示:Error parsing HTTP request header
  5. kafka 报错:kafka server:Message was too large ,server rejected it to avoid allocation
  6. 通过Service访问应用 (2)
  7. leetcode 402. 移掉K位数字(贪心算法)
  8. 虚拟化服务器内存,服务器内存设置虚拟化
  9. git命令出现fatal: unable to access SSL certificate problem: self signed certificate
  10. 计算机网络原理题答案第三章,计算机网络原理第三章习题(含答案).doc
  11. python怎么做相加两个变量_2组语法,1个函数,教你用Python做数据分析
  12. 如何打开caj文件,以及caj文件如何转换为PDF格式
  13. 搜索自己博客中的文章
  14. (附源码)springboot水利机械厂仓储管理系统 毕业设计 091408
  15. Java-编辑图片,添加文字
  16. 服务器客户端证书,客户端如何验证HTTPS服务端证书信息
  17. pam模块之faillock
  18. C语言-函数案例-计算圆周长
  19. PIC单片机入门笔记(新手学PIC必看)——基于PIC16F886
  20. 扎根理论分析软件NVivo原理与技术应用

热门文章

  1. C#---S7.Net编写PLC通讯(从资源安装到功能实现)附代码
  2. linux无法加载蓝牙设备,Linux 无法识别蓝牙适配器解决办法
  3. 网易云音乐歌手歌曲、用户评论、用户信息爬取
  4. 如何使用odoo的compute方法,自动计算odoo字段
  5. *7.1 (指定等级)编写一个程序,读入学生成绩,获取最高分 best, 然后根据下面的规则赋等级值
  6. MATLAB人脸检测算法
  7. 测试计划一般包括什么?
  8. Java 线程间的通信机制(等待和唤醒机制)
  9. 【算法复杂度——空间复杂度-Python】算法空间复杂度的详细介绍
  10. 用for循环求1~10所有偶数的和并显示奇数偶数