安卓图片处理-怎么样在大图中识别到小图位置?(图中搜图)

安卓图片处理-怎么样在大图中识别到小图呢

入移动端的坑,初入AS学习,直接上个例子:
例如消消乐布局,怎么样把它转换为一个二位数组,详细说明:

图片说明

这里想具体问的技术是,怎么实现在总图里找到小图,并标记下来(有时需要模糊查找,有时匹配的图有细节的小变化)?

说一下原来自己的思路:

  • ①bitmap读入图片
  • ②createScaledBitmap缩小图片
  • ③由于不会图搜图,所以getPixel()遍历像素
  • ④遍历背景灰色,确定有用部分边缘(图中红框部分)
  • ⑤根据图的宽高和刚刚确定的部分,确定下来几行几列
  • ⑥将有用部分根据几行几列进行分割
  • ⑦遍历每个分割部分的特征像素点颜色,根据颜色编码
  • ⑧最后完成数组

最后自己的思路卡在了第③步,遍历时间久耗内存,导致程序崩溃,也许还有什么最好的方法,请教大神指点~~

1个回答

已解决,因为元素9×9是固定的,所以直接切割出来并切成81份。
然后有两种方式进行核对,对比元素图像:
1.通过哈希算法进行像素对比 参考:https://blog.csdn.net/luoweifu/article/details/7733030
2.通过提取样点进行颜色对比(我采用的这个,因为方法1误差太大)
计算出来数据map后面就好办了,通过算法计算并提示。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
在大图中查找小图显示位置
在大图片中查找小图的位置。 并圈出位置。
小图在大图中位置查找 openCV python
我想找到某个按钮或者文字在软件上面的具体的坐标, 所以想通过截图的对比方法来找. 搜了一下,不知道是不是关键字不对,总是没有搜到什么.rnrnrn因为截图可能存在颜色 误差 ,所以想先转成黑白的图,然后再查找.rnopenCV 里面有没有现场的函数啊?
opencv 在大图中插在小图的位置
主要采用[b]cvMatchTemplate[/b]函数,但是由于图形尺寸过大,程序会报错,不清楚原因。rn 我在做大图中搜索小图位置时,调用函数cvMatchTemplate 系统会报错rnR6010- abort() has been called rn不知道是什么原因,我图像的尺寸都很大 大图是4736*6469 小图是4120*5125rnrnrnrn程序主要代码如下:rn double dResult = 0.0;rn IplImage* pSrcImage = cvLoadImage(strSrcPath.GetBuffer(0));rn IplImage* pDesImg = cvLoadImage(strDesImagePath.GetBuffer(0));rn IplImage* RPIC;rnrn strSrcPath.ReleaseBuffer();rn strDesImagePath.ReleaseBuffer();rn int nWidth = rcImageRange.right - rcImageRange.left;rn int nHeight = rcImageRange.bottom - rcImageRange.top;rnrn cvSetImageROI(pSrcImage,cvRect(rcImageRange.left,rcImageRange.top,nWidth,nHeight));rn IplImage* pSearchRange =cvCreateImage(cvSize(nWidth,nHeight),pSrcImage->depth,pSrcImage->nChannels);rn cvCopy(pSrcImage,pSearchRange);rn cvResetImageROI(pSrcImage); rn rn CvSize Rsize;rn Rsize.height = pSearchRange->height - pDesImg->height +1;rn Rsize.width = pSearchRange->width - pDesImg->width +1;rn RPIC=cvCreateImage(Rsize,IPL_DEPTH_32F,1);rn cvMatchTemplate( pSearchRange, pDesImg, RPIC, 0 ); //报错位置rn CvPoint point=cvPoint(0,0);rn cvMinMaxLoc(RPIC,NULL,&dResult,NULL,&point,0);rn CvRect rect = cvRect(point.x,point.y,pDesImg->width-1,pDesImg->height-1);rnrn rcDes.top = rect.y;rn rcDes.left = rect.x;rn rcDes.bottom = rect.y + rect.height;rn rcDes.right = rect.x + rect.width; rnrn cvReleaseImage(&pDesImg);rn cvReleaseImage(&pSearchRange);rn cvReleaseImage(&pSrcImage);rnrnrn不知道是什么原因导致的,是不是图像尺寸太大导致?本人初次接触opencv,求各位指点,感激涕零。
用java大图中寻找小图位置
先说下思路: 因为是大图中寻找小图,所以小图必须是大图的一部分,那么对应的他们具有相同的像素点,所以为了一遍就可以搜出来,从小图中抽取若干个像素点(本次DEMO只选区了5个),从大图中找到像素与第一个点满足的,然后直接进行对比第二个点。。。到N个。都符合,说明就找到了,然后为了进行验证,对图片进行了相似度运算。 话不多说,上代码: SearchPixelPosition核心类 public...
在一幅大图中定位一幅小图
请教一个问题:rn现在有一幅大图GA,我们人工截取其中一块小图GB,将GA、GB作为程序输入,要求程序能够求出GB左上角对GA左上角的相对位置,也就是在GA中定位GB。请问现在有没有算法专门用于解决这一问题?rn我搜到一个叫图像识别定位的关键词,但好像又有点牛刀杀鸡了,那种东西要求能适应一定程度的环境干扰,但是我这个需求完全无环境干扰的,就是在一幅大图中定位一幅小图,比如说在windows桌面上定位“我的电脑”这个图标,就是这样的需求。
画大图中的部分
这个是画大图中的小部分位置,代码适合一些C#游戏初学者学习
EmguCV 大图中识别是否包含指定的一个小图
在c#中做图像识别的东西,不太清楚怎么做。rn用了opencv2.2 和 Emgucv2.2 rn现在可以获取图片到rnc# 的Image中 , 同时有一个目标图片是 target.pngrn现在想判断 大图中是否出现了这个目标图片rn在线等
Css抠图(大图中截取一个小图来显示)
今天上午扣图扣了一上午,写了一个仿天地图的工具栏,无奈我这这个审美眼光感觉有点问题,做出来的老感觉别扭具体那点出问题了又说i不出来,先放张图看看效果: 上图中小图标就是自己一点一点抠出来的: 原图长这样的: 就是这样的一张大图里面有许多的小图 一、需要的css 1、background-image: url(); 背景图片的地址 2、background-position ...
大图中查找小图,求更快的算法
以下程序怎么样才能效率更高,占系统资源更少rn// 在源图中查找目标图,如果没有查到,返回(-1,-1)rnfunction GetPosition(SrcPic, DestPic: Tbitmap): TPoint;rntypern tRGB = recordrn R: byte;rn G: byte;rn B: byte;rn A: byte;rn end;rnvarrn sW,sH,dW,dH: integer;rn i,j,x,y: integer;rn tmp: Boolean;rnbeginrn // 将两个图像的宽和高保存在变量中rn sW := SrcPic.Width-1;rn sH := SrcPic.Height-1;rn dW := DestPic.Width-1;rn dH := DestPic.Height-1;rn // 开始比较rn Result := Point(0,0);rn for i:=0 to sW-dW-1 dorn for j:=0 to sH-dH-1 dorn beginrn tmp := true;rn for x:=0 to dW dorn beginrn for y:=0 to dH do beginrn // 每像素的RGB值分别相差5以内算作颜色相同rn if (abs( tRGB(SrcPic.Canvas.Pixels[x+i,y+j]).R - tRGB(DestPic.Canvas.Pixels[x,y]).R ) > 5) orrn (abs( tRGB(SrcPic.Canvas.Pixels[x+i,y+j]).G - tRGB(DestPic.Canvas.Pixels[x,y]).G ) > 5) orrn (abs( tRGB(SrcPic.Canvas.Pixels[x+i,y+j]).B - tRGB(DestPic.Canvas.Pixels[x,y]).B ) > 5)rn then tmp := false;rn if not tmp then break;rn end;rn if not tmp then break;rn end;rn if tmp thenrn beginrn Result := Point(i+1,j+1);rn exit;rn end;rn end;rnend;rnrnrnScanline 的方法不错,已经比较理想,但还想找效率更高的实理方法,个人认为MMX应该会更好,希望懂MMX的高手给出代码实现.
在大图中寻找小图,并定位具体坐标点
在大图中寻找小图,并定位具体坐标点,DLL文件,速度很快。 参数说明: largePic:大图 smallPic:小图 leftupX:左上角X坐标 leftupY:左上角Y坐标 rightdownX:右下角X坐标 rightdownY:右下角Y坐标 tolerance:容差 similarity:相似度 Transparentflag:透明色标记 TransparentR:透明色Red TransparentG:透明色Green TransparentB:透明色Blue smallInLargeX:获得的小图在大图中的X坐标 smallInLargeY:获得的小图在大图中的Y坐标 感谢老师的代码思想!
提取图中激光位置的坐标
如上图,本图是在显微镜下拍摄的图片,图中的亮点是激光所在的位置,我本来是想用C++和OpenCV来找出图中激光所在的位置,后来在老师的点拨下,采用了Python处理。把图片看成一个矩阵,这样操作起来更简单,也更准确。 言归正传,直接看程序。 “”” Created on Thu Jul 27 15:36:22 2017@author: WYH
怎么样产生弹出式菜单???(在视图中)
如题,又怎么样和消息命令联系起来,谢谢!!!
图的基本操作+深度优先遍历在图中的应用
#include<iostream> #include<stdio.h> #include<queue> #define MAX 5 #define INF 100; using namespace std; typedef struct { int data; }vertex; typedef struct{ int edge[MAX][M...
图中,哪个图信噪比高?
[img=http://baike.baidu.com/image/0ef21124cc139c20c995596c][/img]rnrnrnrn链接:http://baike.baidu.com/image/0ef21124cc139c20c995596c
点击图片浏览大图中的动画效果
类似微信 QQ等界面的点击图片浏览大图,以及从大图返回到原界面的图片动画效果
先读小图再读大图然后从大图中找出跟小图匹配的部分
用个直立图来做,原代码有吗?相似的也可以,能比较小图和大图有什么不同或同就可以了。
怎么样在一个SDI视图中显示鼠标的当前位置?
可以在void CMouseDrawerView::OnMouseMove(UINT nFlags,CPoint point)中添加这样的代码:rnrn CHAR szString[255];rn sprintf(szString," [ %d, %d ] ",point.x ,point.y );rn TextOut(GetDC()->m_hDC,650,3,szString,strlen(szString));rnrn实际上是class CPoint : public tagPOINT的,rn然后又是rntypedef struct tagPOINTrnrn LONG x;rn LONG y;rn POINT, *PPOINT, NEAR *NPPOINT, FAR *LPPOINT;rn的.
爱搜图安卓版
爱搜图安卓版
ARKit 获取识别到的水平面
承接ARKit案例开发/宣传Demo开发/游戏开发  QQ:2118590660 ARKit入门到精通系列 (视频教程地址) http://edu.manew.com/user/98138​​​​​​​   ARKit 识别到平面后会以委托的方式传出来  分别为 添加一个平面、 更新平面、移除平面   public delegate void ARAnchorAdd...
图中的链接
我想在一个图中化两个圈,各连接到一个网页,以前在frontpage时很容易,现在在dreamwave里找不到那个划圈圈的东西,请教这个东西在那里
视图中
(mfc)如何在一个视图中新建另外一个视图?
51地图中的比例尺控件的位置怎么设置?
如题,请问地图中的比例尺控件的位置怎么设置?我要把它放在地图的左下角,默认是在右下角,还有下面那个版权和网址是自己单独写还是API中有提供这样的东西啊?[img=http://localhost:3084/卓和最新版/companyMap.aspx][/img]
如何判断一副图中字符的位置
给了一幅图像,我想判断那些地方有字符。命中率不要求很高。不知用什么算法可以解决?rn 望高人指点!!rn 先谢谢了!!!
Lua获取object在全图中的位置
function GetObjectRectOnWorldSpace( object ) if object == nil then return nil end local obj = tolua.cast(object, "CCNode") if obj == nil then return nil end local x,y = obj:getPosition() if ty
Matlab查找图像块在原图中的位置
给定一个图像块,找出它在原图中的位置,无缩放,无旋转 Matlab close all; clear all; clc; im = imread('dog1.jpg'); im=imresize(im,0.5); figure; imshow(im); [m,n,c]=size(im); im = im2double(im); [c, r] = ginput(1); c
自定义Echarts折线图中悬浮框的位置
  在Echarts3的折线图的使用过程中,想使初始化出来的图表更人性化,就比如说有这么个需求,在Echarts折线图中,鼠标悬浮在左侧某一个点时,悬浮框悬停在点的右侧;鼠标悬停在右侧某一个点时,悬浮框悬停在点的左侧。 下面是具体实现思路:   首先明确一点,我们需要借助tooltip.position属性。理想的思路是我们在回调函数中获取鼠标每次悬停的坐标,然后再判断这个坐标是否处于此容器(...
c++循环如何打印图中交错位置?
循环如何打印图中交错位置?[img=https://img-bbs.csdn.net/upload/201710/18/1508310983_921082.png][/img]
视图中当前位置如何获取?
应该调用什么函数呀
语音波形图中的位置线绘制问题
为了能实现cooledit 中类似的功能,我希望在绘制的语音波形图上实现:左键点击建立一个起始的位置线,标明我我要选取的语音段的开头,右键点击作为结束线,标明选择区域的结尾。起始线用蓝色,结束线用红色。rnrn我已经做了如下的工作:鼠标点击得到在波形图中的位置,然后做成一个线状的RECTrn开始我用InvertRect()。这样作可以对左键处理,但不能用多种颜色,就无法再用这个。然后我改用Rectangle(),不过这样作又会在改变位置的时候把原先的波形图也抹掉了。rnrn哪位朋友做过类似的工作,可否指导一下。rn
怎样记下对话框在视图中的 位置?
请教各位大虾,我是VC初学者,请帮帮我。rn我在视图中生成了几个对话框,通过鼠标拖动后到合适的位置,我想记下该对话框的位置,以便下次运行程序后,恢复原来各对话框的位置,怎样实现?
在视图中,在指定的位置播放avi文件
vc播放avi文件非常简单,但是能不能在在视图中,指定的位置来播放avi文件?rn一般播放都是在视图的(0,0)处。请各位朋友赐教
jfreechart柱状图中的数值怎么样横着显示?
我用jfreechart生成柱状图,在柱的顶端显示数值,怎么会显示竖起呢?比如123.就显示成rn3rn2rn1rnrn怎么样调成正常显示啊?
LeetCode 细分图中的可到达结点(图)
从具有 0 到 N-1 的结点的无向图(“原始图”)开始,对一些边进行细分。 该图给出如下:edges[k] 是整数对 (i, j, n) 组成的列表,使 (i, j) 是原始图的边。 n 是该边上新结点的总数 然后,将边 (i, j) 从原始图中删除,将 n 个新结点 (x_1, x_2, …, x_n) 添加到原始图中, 将 n+1 条新边 (i, x_1), (x_1, x_2), (x_2...
在视图中,怎么样使记录集排序?
我在查询分析器中创建了一个视图,我想把提取出来的记录集进行排序,但是系统提示不能够在视图中使用ORDER BY,除非限定TOP,我试着加入TOP 100,但是不管这个语句加在什么地方,都会报错!rnrn请问我应该怎么样编写视图,才能达到我所要求的查询结果呢?
下图中死锁的事务等待图怎么画
[img=http://localhost/asp_ps/1.jpg][/img]
怎样在一副图中快速查找另一幅图?
有两幅图A和B,中B包含在A中,请问如何查找B在A中出现的位置呢?可能有朋友会建议我用按键精灵里面带的一个dll中的findpic()这个函数,不过想就想知道这个函数的是怎样做成的,特别是图形的模糊查找又是什么原理呢?rn有知道的大侠请讲讲啊!谢谢了!
图中找图对比,Java源代码,Android源代码
个人整理的一段安卓源代码,实现的功能是传入两个bmp图片,然后对比两个图片,源代码中是从一张大图片中找小图片,例如从一张有一千个各色钮扣的图片中,找里边一共有多少个红色钮扣,并且把这些红色钮扣的坐标值返回给调用者。 根据我这些代码的提示,您可以写出找茬游戏工具,图片对比工具,这类需要图片对比的工具。 我在代码中只做了pixel的对比,如果你把它转化为R、G、B值再一一对比,将会实现更加强大的功能。 希望这些代码能给真正需要的朋友一个清晰的思路,以实现自己想要的这类功能。
怎么样处理Rose协作图中的编号问题?
在Rose的协作图中有个自动编号,我们好像不能修改它,有什么别的办法吗?如果我去掉自动编号而采用手动编号,其结果是Rose在检查的时候会将我的编号也包含在消息名里,希望大家能指点一下,怎么样处理这个问题。
SURFER_MAPGIS在地球化学图制图中的对比研究
SURFER_MAPGIS在地球化学图制图中的对比研究
获得B图在A图中的坐标??
这里举例说明一下 A图是原图 B图是从A图上截下来的一部分rn有什么办法能获得B图在A图上的起始坐标呢?rnrn如何对比2个图片的差异度 完全相同= 100% 完全不同 = 0% rn
相关热词 c# 标准差 计算 c#siki第五季 c#入门推荐书 c# 解码海康数据流 c# xml的遍历循环 c# 取 查看源码没有的 c#解决高并发 委托 c#日期转化为字符串 c# 显示问号 c# 字典对象池