| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2534 人关注过本帖
标题:怎么分析出图片上文字的位置(类似分析验证码图)
只看楼主 加入收藏
callchenxi
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2007-8-29
收藏
 问题点数:0 回复次数:8 
怎么分析出图片上文字的位置(类似分析验证码图)

怎么分析出上图中A B的位置?因为我想用具体数字如100替换掉它
搜索更多相关主题的帖子: 位置 文字 验证 数字 上图 
2007-09-09 17:52
pacocai
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1583
专家分:0
注 册:2007-3-12
收藏
得分:0 
看不到图……

浮生若梦天边月,醉死如酒水中星。红楼一梦千人叹,岂让万夫空做贱。博客:http://hi.baidu.com/rxvip
2007-09-09 17:54
callchenxi
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2007-8-29
收藏
得分:0 
怎么会??其实图就是


B ┃ A
┗━━━━━━━

[此贴子已经被作者于2007-9-9 18:58:39编辑过]


2007-09-09 18:56
pacocai
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1583
专家分:0
注 册:2007-3-12
收藏
得分:0 
你的A和B是控件还是什么???不会是一张图像,然后里有有A和B两个像素吧?

---------------------
| |
| A |
| |----C
| B |
---------------------

----- -----
| A | | B |
----- -----
上面是一张图片,图片上有A和B两个像素。如果是图片的话就没有可能。当然,可以把A点和B点先切下来,然后用图片A对比图片C,如果查找到相对应的点的话就用一个控件把这一块用一个新的图片盖住。大概是这样。如果是验证码的话通常每个字符或数字是分开一张张图片的。比方说5329,那么5是一张图片,3是一张图片。如果替换的话就直接把这张图片直接替换就可以了,只能替换图片的整张,如果只是替换图片中的一部份…………理论上应该能实现,但怎么弄,这个就不知道了。最少很多的图像软件都可以实现。

PS:如果是没有背景的图像要好办一些。如果有背景图像而且相对来说颜色比较复杂的就更加麻烦。

浮生若梦天边月,醉死如酒水中星。红楼一梦千人叹,岂让万夫空做贱。博客:http://hi.baidu.com/rxvip
2007-09-09 19:19
callchenxi
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2007-8-29
收藏
得分:0 
图是一条折线,A,B是标注
我就是想把弄个让用户输A B的值
然后我把它添到图上A B的位置,并把原来的A,B弄掉
我刚开始是想颜色比较法,不过你那个图像比较法好像也听不错,不过能返回原图上对应的坐标吗

2007-09-09 20:38
callchenxi
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2007-8-29
收藏
得分:0 
补充下,背景是单一颜色的

2007-09-09 20:40
pacocai
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1583
专家分:0
注 册:2007-3-12
收藏
得分:0 
以下是引用callchenxi在2007-9-9 20:38:47的发言:
图是一条折线,A,B是标注
我就是想把弄个让用户输A B的值
然后我把它添到图上A B的位置,并把原来的A,B弄掉
我刚开始是想颜色比较法,不过你那个图像比较法好像也听不错,不过能返回原图上对应的坐标吗


如果你用颜色比较法的话就会有一个问题,如果你的A点和B点的颜色一样的话那就找不到。还有就是怎样替换呢?这个又是个麻烦事。我觉得用图像比较法比较好,不过这个准确度就比较麻烦了。

我这里有一个给照片打logo的代码,你看一下,或许能有帮助。这个是用BitmapData来实现的。

// 取以大图(X,Y)为起点,w * h 的矩形区域
BitmapData srcData = b0.LockBits(new Rectangle(X,Y,w,h),ImageLockMode.WriteOnly,PixelFormat.Format24bppRgb);

// 取整个Logo
BitmapData dstData = b1.LockBits(new Rectangle(0,0,w,h),ImageLockMode.ReadOnly, PixelFormat.Format24bppRgb);

unsafe
{
byte* pIn = (byte*)srcData.Scan0.ToPointer();
byte* pLogo = (byte*)dstData.Scan0.ToPointer();

for (int y = 0; y < h; y++)
{
for (int x = 0; x < w; x++)
{

// 复制Logo图的像素
pIn[0] = (byte)pLogo[0];
pIn[1] = (byte)pLogo[1];
pIn[2] = (byte)pLogo[2];

pIn += 3;
pLogo += 3;
}

pIn += srcData.Stride - w * 3;
pLogo += dstData.Stride - w * 3;
}

b0.UnlockBits(srcData);
b1.UnlockBits(dstData);
}


浮生若梦天边月,醉死如酒水中星。红楼一梦千人叹,岂让万夫空做贱。博客:http://hi.baidu.com/rxvip
2007-09-09 22:00
pacocai
Rank: 3Rank: 3
等 级:新手上路
威 望:6
帖 子:1583
专家分:0
注 册:2007-3-12
收藏
得分:0 
其它的我帮不上忙了,水平有限……

浮生若梦天边月,醉死如酒水中星。红楼一梦千人叹,岂让万夫空做贱。博客:http://hi.baidu.com/rxvip
2007-09-09 22:01
callchenxi
Rank: 1
等 级:新手上路
帖 子:15
专家分:0
注 册:2007-8-29
收藏
得分:0 
恩,确实是,A B颜色一样时分辨的算法真的很难构想出来
谢谢你,给了我个好的思路

2007-09-10 20:57
快速回复:怎么分析出图片上文字的位置(类似分析验证码图)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.016420 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved