360Buy 京东商城商品价格图片识别 火车头采集京东商城图片价格识别
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;
using System.IO;
namespace ConsoleApplication1
{
class MyImage
{
//需要进行分析的图片
private Bitmap bmpobj;
//需要继承并且重写的数字比对串,在子类里面需要用到这个去比对数字
public Dictionary<string, char> numDic = new Dictionary<string, char>();
//得到图片中某一点的灰度数值
private int GetGrayNumColor(System.Drawing.Color posClr)
{
return (posClr.R * 19595 + posClr.G * 38469 + posClr.B * 7472) >> 16;
}
//进行灰度处理
private void GrayByPixels()
{
for (int i = 0; i < bmpobj.Height; i++)
{
for (int j = 0; j < bmpobj.Width; j++)
{
int tmpValue = GetGrayNumColor(bmpobj.GetPixel(j, i));
bmpobj.SetPixel(j, i, Color.FromArgb(tmpValue, tmpValue, tmpValue));
}
}
}
//得到一个图片的01代码序列
private string GetSingleBmpCode(Bitmap singlepic, int dgGrayValue)
{
Color piexl;
string code = "";
for (int posy = 0; posy < singlepic.Height; posy++)
for (int posx = 0; posx < singlepic.Width; posx++)
{
piexl = singlepic.GetPixel(posx, posy);
if (piexl.R < dgGrayValue) // Color.Black )
code = code + "1";
else
code = code + "0";
} return code;
}
//从一个图片里面得到几个分开的数字小图片
private Bitmap[] GetPicValidByValue(int dgGrayValue)
{
List<Bitmap> PicList = new List<Bitmap>();
Rectangle cloneRect;
int posx1 = bmpobj.Width, posy1 = bmpobj.Height, posx2 = 0, posy2 = 0;
bool cut = false;
int last = -1, lastx = 0;
for (int j = 0; j < bmpobj.Width; j++) //找有效区
{
cut = false;
for (int i = 0; i < bmpobj.Height; i++)
{
int pixelValue = bmpobj.GetPixel(j, i).R;
if (pixelValue < dgGrayValue) //根据灰度值
{
if (posx1 > j) posx1 = j;
if (posy1 > i) posy1 = i;
if (posx2 < j) posx2 = j;
if (posy2 < i) posy2 = i;
cut = true;
}
};
if (cut)
continue;
if (last + 1 == j)
{
last++;
continue;
}
cloneRect = new Rectangle(posx1, posy1, posx2 - posx1 + 1, posy2 - posy1 + 1);
lastx = j;
last = j;
posx1 = bmpobj.Width;
posy1 = bmpobj.Height;
posx2 = 0;
posy2 = 0;
PicList.Add(bmpobj.Clone(cloneRect, bmpobj.PixelFormat));//复制小块图
};
return PicList.ToArray();
}
//得到一个图片的数字串
private string GetPicNumber()
{
GrayByPixels(); //灰度处理
Bitmap[] pics = GetPicValidByValue(128); //得到有效值
StringBuilder sb = new StringBuilder();
char c;
for (int i = 0; i < pics.Length; ++i)
{
string code = GetSingleBmpCode(pics[i], 128); //得到代码串
if (numDic.TryGetValue(code, out c))
{
sb.Append(c);
}
}
return sb.ToString();
}
//外部调用,得到一个图片的数字串
public string GetPicNum(Bitmap pic)
{
bmpobj = new Bitmap(pic); //转换为Format32bppRgb
return GetPicNumber();
}
//外部调用,得到一个图片的数字串(重载)
public string GetPicNum(string fileName)
{
bmpobj = new Bitmap(fileName);
return GetPicNumber();
}
//输出在一幅图里面找到的数字,测试或者找到数字比对串时用
private void TestNumber()
{
GrayByPixels(); //灰度处理
Bitmap[] pics = GetPicValidByValue(128); //得到有效值
for (int i = 0; i < pics.Length; ++i)
{
string code = GetSingleBmpCode(pics[i], 128); //得到代码串
Console.WriteLine(i); Console.WriteLine(code);
}
}
//外部调用,输出在一幅图里面找到的数字,测试或者找到数字比对串时用
public void TestNum(Bitmap pic)
{
bmpobj = new Bitmap(pic); //转换为Format32bppRgb
TestNumber();
}
//外部调用,输出在一幅图里面找到的数字,测试或者找到数字比对串时用(重载)
public void TestNum(string fileName)
{
bmpobj = new Bitmap(fileName);
TestNumber();
}
}
class JingdongImage : MyImage
{
public JingdongImage()
{
//numDic.Add("111101111011100110001110100001110100000111000000111000001111100000111000000111100", '¥');
numDic.Add("011110110011110011110011110011110011110011011110", '0');
numDic.Add("01101110011001100110011001101111", '1');
numDic.Add("011110110011000011000110001100011000110000111111", '2');
numDic.Add("011110110011000011001110000011000011110011011110", '3');
numDic.Add("000010000110001110010110100110111111000110000110", '4');
numDic.Add("011111011000011000011110000011000011110011011110", '5');
numDic.Add("001110011000110000111110110011110011110011011110", '6');
numDic.Add("111111000011000110000110001100001100011000011000", '7');
numDic.Add("011110110011110011011110110011110011110011011110", '8');
numDic.Add("011110110011110011110011011111000011000110011100", '9');
numDic.Add("1111", '.');
}
}
class Program
{
static void Main(string[] args)
{
DirectoryInfo dInfo = new DirectoryInfo(@"D:/Images");
JingdongImage test = new JingdongImage();
foreach (var file in dInfo.GetFiles())
{
Console.WriteLine(file.FullName);
Console.WriteLine(test.GetPicNum(file.FullName));
}
Console.ReadLine();
}
}
}
360Buy 京东商城商品价格图片识别 火车头采集京东商城图片价格识别相关推荐
- 火车头采集器 页面图片等信息采集
火车头采集器 页面图片等信息采集 有些采集的页面中有图片或者其他内容如链接的word文档等等,如果采集下来,并保持链接呢. 火车头采集器中给了较好的操作. 在内容采集中,选择内容下载,如果仅仅是图片, ...
- 火车头图片储存-火车头采集图片储存插件及教程
火车头图片储存,怎么设置火车头存储第三方平台或者储存本地化? 怎么批量给图片加上水印.今天就教大家怎么配置火车头图片储存只需简单几步,详细如图. 为什么要采集的文章远程图片自动保存到本地服务器,现在很 ...
- 火车头采集之采集规则编写
文章目录[隐藏] 前言 目标网站分析 火车头采集器使用(mip.chiyuba.com 可搜索下载) 总结 前言 上一篇火车头采集系列主要给大家一个引导作用,让大家简单了解火车头采集器有什么功能,从次 ...
- 京东商城(360Buy)价格识别 java版
上一篇介绍到 利用Jsoup抓取各个电商网站的信息 不过有时候会遇到价格是图片的问题 这时候你只能得到一张图片了 如果有个能把图片解析出来那该多爽啊 去百度一搜"京东(360Buy)价格识别 ...
- 京东商城商品价格获取方法
在我看来,现在电子商务市场做得最红火的两个网站,当属于淘宝和京东了,淘宝对我们来说又太杂了,而京东往往是我们最关注的电子商务网站! 在易淘事件过后,京东国美等网购商城的价格往往成为人们非常关注的问题, ...
- 火车头采集器采集图片文章详细 教程
火车头采集器怎么采集带图片文章?首先要更好的使用火车头采集器软件,必须需要有基本的HTML基础,能看得懂网页源码,网页结构. 同时如果用到web发布或数据库发布,则对自己文章系统及数据存储结构要非常了 ...
- 京东商品图片要怎么采集?下图高手来教你
现在开商城的人非常多,很多都是需要在网上采集商品,然后在自己的商城中发布! 如何采集这些商品,其实市场也有很多的软件和插件,但是大多数都只是采集某一种,如果你需要的商品种类比较多,那么就需要多种插件, ...
- 火车头采集器文章翻译插件(文章标题内容中英双语对照|自动插入相关图片)
火车头采集器文章翻译插件(文章标题内容中英双语对照|自动插入相关图片) 为了保护接口压力防止被封IP: 请把采集的间隔时间调整为10000~100000 火车头采集器文章翻译插件(文章标题内容中英双语 ...
- 火车头怎么采集图片-火车头采集图片并保存本地化
火车头怎么采集图片?首先我们一起来了解一下火车头采集器,火车头采集器抓取数据取是决于您的规则.要获取某个网页的所有内容,您需要先获取此网页的网址.程序按规则抓取列表页面,分析其中的URL,然后写规则获 ...
最新文章
- 漫话:如何给女朋友解释为什么不能在 MySQL 中使用 UTF-8 编码
- python自动化框架pytest接口关联串联_基于python接口自动化框架搭建_pytest+jenkins+allure...
- PHP安装memcache扩展
- 重磅推荐!大咖解读,重新定义 B2B 获客转化,引爆企业营销
- 何将ext中的FormPanel中,所有组件都居中放置?
- mysql中 !40000 DROP DATABASE IF EXISTS `top_server` 这中注释有什么作用?
- 用gdb搞清楚一道union相关的面试题
- python语言format用法_python格式化输出之format用法
- 输出三角形面积和周长 (15 分)
- sonar+Jenkins 构建代码质量自动化分析平台
- pyinstaller 用法
- 提高短线操作成功率的诀窍!
- Error 1606 Could Not Access Network Location %SystemDrive%/inetpub/wwwroot/ 的错误解决方法
- Exposure X8标准版图片后期滤镜PS、LR等软件的插件
- 从数据分析角度谈谈谁才是这个夏天的无价之姐——基于弹幕文本分析
- keras非线性回归代码专题
- 工欲善其事 必先利其器-——Idea使用(1)-初次识别
- 我来回答,害怕别人赚钱到底是一种什么样的心理
- 与太阳神对话——j2se之旅
- STM32之温湿度DHT11驱动
热门文章
- 这篇文章几乎回答了你对量化对冲的所有疑问
- IT程序员的常见病:颈椎病、肩周炎 .
- NLTK词性pos_tag的含义
- 李善友:中国可以活3年以上的企业不到10%
- 你的网站安全吗?ZAP应用实例
- 2021高考成绩查询衢州,2021浙江衢州中考成绩查询时间 衢州中考成绩查询入口
- Excel T检验双样本等方差分析
- at com.android.xiong.aysnctasktest.MainActivity$PageTask.onPostExecute(MainActivity.java:116)
- P3084 [USACO13OPEN]照片Photo(差分约束)
- 永远做一个有计划的人