精华内容
下载资源
问答
  • 如图表中,在content字段中会有一个或多个6位数的数字,例如“每日穿搭打卡87 优衣库UNIQLO新品货号:123456, 货号:112233“这样一行,该怎么把“123456”和“112233”这两组数字都提取出来,像87这样非6位的不用...
  • 我只知道怎么读全部,但是我不知道如何单独把数字出来进行判断。。。 ``` #include #include #include #include using namespace std; int main() { fstream input("input.dat", ios::in); ...
  • 得到一张数据表如下,现在想把图片的数字提取出来,之前一直是用在线转换网站:https://ocr.wdku.net/进行处理,结果今天用太频繁了,不让我免费用,居然想跟我收钱,我怎么可能交这种钱呢,于是就打算自己花点...
  • ![图片说明]...反正就是用语句这三种特征的字段其中的数字提取出来,在partid字段添加1P,2P, 3P的值。 请问各位数据库大神这样应该怎么写SQL语句?
  • 其原理就是计算出一个阈值,使到阈值处理后图片的黑色像素与白色像素的数量相等或者最接近,也就是把图片按黑白像素对半分的方法来对图像进行分割。 关于程序的使用方法,可以在鼠标右键菜单中选择“调整”->“阈值...
  • 卷积神经网络其实是一个函数,也可以说它是一个黑箱,输入是一个二维像素阵列,也就是...比如这三个特征提取出来,叫做卷积核,或者特征提取器,用于在输入图中寻找相应特征 下面介绍一下,卷积核是怎样判...

    卷积神经网络其实是一个函数,也可以说它是一个黑箱,输入是一个二维的像素阵列,也就是图片,输出就是这个图片是什么
    在这里插入图片描述
    就是将这些经过平移,旋转,局部加粗等的图像辨别出来,抗干扰性很强
    在这里插入图片描述
    对于计算机来说,怎么用数字进行特征提取是非常重要的,即使图像进行了一定的改变,但也会保留原始图的特征
    在这里插入图片描述
    比如把这三个特征提取出来,叫做卷积核,或者特征提取器,用于在输入图中寻找相应的特征
    在这里插入图片描述
    下面介绍一下,卷积核是怎样判断特征的,让卷积核与图片对应相乘,得出结果为九个一的矩阵,将这些得出来的数做平均值
    在这里插入图片描述
    在这里插入图片描述
    这就表示绿框中的的值和卷积核的特征完全一致
    在这里插入图片描述
    那么如果卷积核与图像的其他部分做卷积运算呢
    当该卷积核与中间部分进行卷积时,情况如下:
    在这里插入图片描述
    它加起来平均值为0.55,表示他俩不一样,但仍保留了0.55的特征,把所有的数据算出来是这样的,颜色越浅表示相似度越高
    在这里插入图片描述
    用不同的卷积核可以把不同的特征提取出来
    在这里插入图片描述
    因为实际的识别涉及到的特征和图片很大,所以要将得到的矩阵缩小,把一部分的矩阵得出的数用一个数字表示,这也叫做池化
    在这里插入图片描述
    也就是在可接受范围内牺牲一部分值,池化有两种方式,一是取最大值,二是取平均值,应用都非常广
    在这里插入图片描述
    以取最大值为例,将上面的矩阵缩小,得到的特征仍会保留,如果计算需要,在外圈补零
    在这里插入图片描述
    接下来使用激活函数将上面矩阵的负数全部抹成零,经过卷积,抹零(激活函数是relu),池化,得到:
    在这里插入图片描述
    以上过程可以进行多次

    全连接层
    将得到的矩阵排成一列
    在这里插入图片描述
    每一个像素点都有权重,把判断x的权重加起来,就可以得到一个概率,这是要通过训练得到的

    在这里插入图片描述
    x的概率是0.92,o的概率是0.51,所以认为图的特征是x
    全连接网络可以放好多层
    在这里插入图片描述

    用大量图片去训练模型,通过反向传播的方法,将它与真实的结果进行比较,然后将神经网络的结果与真实结果的误差进行计算,这叫损失函数,我们的目标就是将损失函数降到最低(求导获得最低值),通过将卷积核和权重进行微调使得误差函数最小,他会将误差一层层反馈回去,所以叫反向传播。
    经过大量训练,他就自动学会了选择卷积核和选择权重,这就是机器学习。

    展开全文
  • 今天我们要讲三个类,这三个类应该算比较简单 HelpLayer类 NumberLayer类 ...NumberLayer类,涉及到自定义字体制作,我们提取出来的资源里,有很多数字图片: 现在我们要它们做成这样子

    今天我们要讲三个类,这三个类应该算比较简单的

    HelpLayer类

    NumberLayer类

    GetLocalScore类

    HelpLayer类,主要放了两个图形精灵上去,一个是游戏的名字,一个是提示游戏怎么玩的,就一张图:


    NumberLayer类,涉及到自定义字体的制作,我们提取出来的资源里,有很多数字图片:


    现在我们要把它们做成这样子的:


    这个跟游戏图片资源差不多,做成这样就可以直接拿来用,省了很多事情,那怎么做了,这里我们要用到一个叫软件,具体使用方法和过程,我这里就不介绍了,大家直接戳这里

    http://blog.csdn.net/swejackies/article/details/8967903

    介绍的很详细,也感谢这个作者。NumberLayer类这个类中还有一个问题就是单例实现,单例类:顾名思义它就只有一个实例,有时候,一个功能类有很多的实例,会让程序变得十分复杂,单例类解决了这个问题。

    GetLocalScore类,本地数据的存取,这个类也很简单,都是调用了,cocos2d-x的一些接口,所以没什么难度。

    下面就是这三个类的代码分析:


    //HelpLayer.h
    #pragma once
    #include "cocos2d.h"
    class HelpLayer:public cocos2d::Layer
    {
    public:
    	HelpLayer();
    	~HelpLayer();
    	bool init();
    	//回调函数
    	void callBack();
    	CREATE_FUNC(HelpLayer);
    
    private:
    	//单点触控侦听
    	cocos2d::EventListenerTouchOneByOne * listener;
    	cocos2d::Sprite * gameName;
    	cocos2d::Sprite * tutorial;
    };

    //HelpLayer.cpp
    #include "HelpLayer.h"
    USING_NS_CC;
    
    HelpLayer::HelpLayer()
    {
    
    }
    
    HelpLayer::~HelpLayer()
    {
    
    }
    
    bool HelpLayer::init()
    {
    	if (!Layer::init())
    	{
    		return false;
    	}
    	auto origin=Director::getInstance()->getVisibleOrigin();
    	auto visibleSize=Director::getInstance()->getVisibleSize();
    
    	//游戏名字
    	gameName=Sprite::createWithSpriteFrameName("text_ready.png");
    	gameName->setPosition(Point(origin.x+visibleSize.width*0.5,origin.y+visibleSize.height*0.8));
    	this->addChild(gameName);
    
    	//玩法提示
    	tutorial=Sprite::createWithSpriteFrameName("tutorial.png");
    	tutorial->setPosition(Point(origin.x+visibleSize.width*0.5,origin.y+visibleSize.height*0.4));
    	this->addChild(tutorial);
    
    	//单点触控侦听,前面几章说到过,这边就不说了
    	listener=EventListenerTouchOneByOne::create();
    	listener->setSwallowTouches(false);
    
    	listener->onTouchBegan=[](Touch * t,Event * e)
    	{
    		log("touch began");
    		return true;
    	};
    	listener->onTouchEnded=[=](Touch *t,Event * e)
    	{
    		//这个layer单击一下就会消失,所以这边检测到点击的时候
    		//就会从事件分发器中移除这个侦听
    		_eventDispatcher->removeEventListener(listener);
    		//这个渐隐动画,因为执行动画的有两个精灵,要有两个这样的动画
    		//所以fade_2克隆了一个fade
    		auto fade=FadeOut::create(0.5f);
    		//克隆
    		auto fade_2=fade->clone();
    
    		//动画执行+回调函数
    		auto callback=CallFuncN::create(CC_CALLBACK_0(HelpLayer::callBack,this));
    		auto sequence=Sequence::create(fade,callback,NULL);
    		tutorial->runAction(sequence);
    		gameName->runAction(fade_2);
    
    	};
    	//上次讲侦听的时候可能没讲,每一个侦听都要加入到事件分发器中,就是下面这句代码
    	//第一个参数就是我们的侦听,第二个参数是要加这个侦听的对象
    	//这里我们的点击对象就是这整个层,所以是this
    	_eventDispatcher->addEventListenerWithSceneGraphPriority(listener,this);
    
    
    	return true;
    }
    //移除这两个精灵
    void HelpLayer::callBack()
    {
    	this->removeChild(tutorial);
    	this->removeChild(gameName);
    }
    

    //NumberLayer.h
    #pragma once
    #include "cocos2d.h"
    class NumberLayer:public cocos2d::Layer
    {
    public:
    	NumberLayer();
    	~NumberLayer();
    	bool init();
    	//加分
    	void addScore();
    	//初始化分数
    	void initScore();
    	//获得分数
    	int getScore();
    	//获得单例对象
    	static NumberLayer * getInstance();
    
    private:
    	cocos2d::Label * numberLabel;
    	int score;
    };
    

    //NumberLayer.cpp
    #include "NumberLayer.h"
    USING_NS_CC;
    //唯一存在的自身对象(这边一定要赋初值null),注意是静态的
    static NumberLayer * instance=NULL;
    NumberLayer::NumberLayer()
    {
    }
    
    NumberLayer::~NumberLayer()
    {
    }
    //单例类最主要部分
    NumberLayer * NumberLayer::getInstance()
    {
    	//判断这个对象是否存在
    	if (instance==NULL)
    	{
    		//如果不存在,那就创建
    		NumberLayer * temp=new NumberLayer();
    		//然后初始化
    		temp->init();
    		instance=temp;
    	}
    	//如果已经存在了,那就直接返回
    	return instance;
    }
    
    bool NumberLayer::init()
    {
    	if (!Layer::init())
    	{
    		return false;
    	}
    
    	auto origin=Director::getInstance()->getVisibleOrigin();
    	auto visibleSize=Director::getInstance()->getVisibleSize();
    
    	//初始化分数
    	score=0;
    	//这是自定义字体的使用
    	auto str=__String::createWithFormat("%d",score);
    	numberLabel=Label::createWithBMFont("font1.fnt",str->getCString());
    	numberLabel->setPosition(Point(origin.x+visibleSize.width/2,origin.y+visibleSize.height*0.85));
    	this->addChild(numberLabel);
    
    
    
    
    	return true;
    }
    
    void NumberLayer::addScore()
    {
    	score++;
    	auto str=__String::createWithFormat("%d",score);
    	numberLabel->setString(str->getCString());
    }
    
    void NumberLayer::initScore()
    {
    	score=0;
    	auto str=__String::createWithFormat("%d",score);
    	numberLabel->setString(str->getCString());
    }
    
    int NumberLayer::getScore()
    {
    	return score;
    }
    

    //GetLocalScore.h
    #pragma once
    #include "cocos2d.h"
    class GetLocalScore
    {
    public:
    	GetLocalScore();
    	~GetLocalScore();
    	static GetLocalScore * getInstance();
    	//判断是否存在本地文件
    	bool isHaveLocalFile();
    	//获取本地文件中的分数
    	int getHighScore();
    	//写入本地文件分数
    	void setHighScore(int);
    private:
    
    };
    


    //GetLocalScore.cpp
    #include "GetLocalScore.h"
    USING_NS_CC;
    static GetLocalScore * instance=NULL;
    GetLocalScore::GetLocalScore()
    {
    
    }
    
    GetLocalScore::~GetLocalScore()
    {
    
    }
    //这边单例就不介绍了
    GetLocalScore * GetLocalScore::getInstance()
    {
    	if (instance==NULL)
    	{
    		GetLocalScore * temp=new GetLocalScore();
    		instance=temp;
    	}
    	return instance;
    }
    
    bool GetLocalScore::isHaveLocalFile()
    {
    	//直接去获取这个值,如果存在,返回true
    	if (UserDefault::getInstance()->getBoolForKey("isHaveLocalFile"))
    	{
    		return true;
    	}
    	else
    	{
    		//如果不存在,那就创建,并写入分数
    		//如果写入的数据是bool型,就用setBoolForKey
    		//如果写入的数据是int型,就用setIntegerForKey
    		//还有别的类型的写入,方法差不多,这里就不介绍了
    		UserDefault::getInstance()->setBoolForKey("isHaveLocalFile",true);
    		UserDefault::getInstance()->setIntegerForKey("highScore",0);
    		UserDefault::getInstance()->flush();
    		return false;
    	}
    }
    //获得分数
    int GetLocalScore::getHighScore()
    {
    	if (isHaveLocalFile())
    	{
    		return UserDefault::getInstance()->getIntegerForKey("highScore");
    	}
    	else
    	{
    		return 0;
    	}
    }
    //写入分数
    void GetLocalScore::setHighScore( int n)
    {
    	if (isHaveLocalFile())
    	{
    		UserDefault::getInstance()->setIntegerForKey("highScore",n);
    		UserDefault::getInstance()->flush();
    	}
    	else
    	{
    		UserDefault::getInstance()->setBoolForKey("isHaveLocalFile",true);
    		UserDefault::getInstance()->setIntegerForKey("highScore",n);
    		UserDefault::getInstance()->flush();
    	}
    }
    

    今天就到这里

    展开全文
  • 今天我们要讲三个类,这三个类应该算比較简单 HelpLayer类 ...NumberLayer类,涉及到自己定义字体制作,我们提取出来的资源里,有非常多数字图片: 如今我们要它们做成这样...

    今天我们要讲三个类,这三个类应该算比較简单的

    HelpLayer类

    NumberLayer类

    GetLocalScore类

    HelpLayer类,主要放了两个图形精灵上去,一个是游戏的名字,一个是提示游戏怎么玩的,就一张图:


    NumberLayer类,涉及到自己定义字体的制作,我们提取出来的资源里,有非常多数字图片:


    如今我们要把它们做成这样子的:


    这个跟游戏图片资源差点儿相同,做成这样就能够直接拿来用,省了非常多事情,那怎么做了,这里我们要用到一个叫软件,详细用法和过程,我这里就不介绍了,大家直接戳这里

    http://blog.csdn.net/swejackies/article/details/8967903

    介绍的非常具体,也感谢这个作者。NumberLayer类这个类中另一个问题就是单例实现,单例类:顾名思义它就仅仅有一个实例,有时候,一个功能类有非常多的实例,会让程序变得十分复杂,单例类攻克了这个问题。

    GetLocalScore类,本地数据的存取,这个类也非常easy,都是调用了,cocos2d-x的一些接口,所以没什么难度。

    以下就是这三个类的代码分析:


    //HelpLayer.h
    #pragma once
    #include "cocos2d.h"
    class HelpLayer:public cocos2d::Layer
    {
    public:
    	HelpLayer();
    	~HelpLayer();
    	bool init();
    	//回调函数
    	void callBack();
    	CREATE_FUNC(HelpLayer);
    
    private:
    	//单点触控侦听
    	cocos2d::EventListenerTouchOneByOne * listener;
    	cocos2d::Sprite * gameName;
    	cocos2d::Sprite * tutorial;
    };

    //HelpLayer.cpp
    #include "HelpLayer.h"
    USING_NS_CC;
    
    HelpLayer::HelpLayer()
    {
    
    }
    
    HelpLayer::~HelpLayer()
    {
    
    }
    
    bool HelpLayer::init()
    {
    	if (!Layer::init())
    	{
    		return false;
    	}
    	auto origin=Director::getInstance()->getVisibleOrigin();
    	auto visibleSize=Director::getInstance()->getVisibleSize();
    
    	//游戏名字
    	gameName=Sprite::createWithSpriteFrameName("text_ready.png");
    	gameName->setPosition(Point(origin.x+visibleSize.width*0.5,origin.y+visibleSize.height*0.8));
    	this->addChild(gameName);
    
    	//玩法提示
    	tutorial=Sprite::createWithSpriteFrameName("tutorial.png");
    	tutorial->setPosition(Point(origin.x+visibleSize.width*0.5,origin.y+visibleSize.height*0.4));
    	this->addChild(tutorial);
    
    	//单点触控侦听,前面几章说到过,这边就不说了
    	listener=EventListenerTouchOneByOne::create();
    	listener->setSwallowTouches(false);
    
    	listener->onTouchBegan=[](Touch * t,Event * e)
    	{
    		log("touch began");
    		return true;
    	};
    	listener->onTouchEnded=[=](Touch *t,Event * e)
    	{
    		//这个layer单击一下就会消失,所以这边检測到点击的时候
    		//就会从事件分发器中移除这个侦听
    		_eventDispatcher->removeEventListener(listener);
    		//这个渐隐动画,由于运行动画的有两个精灵,要有两个这种动画
    		//所以fade_2克隆了一个fade
    		auto fade=FadeOut::create(0.5f);
    		//克隆
    		auto fade_2=fade->clone();
    
    		//动画运行+回调函数
    		auto callback=CallFuncN::create(CC_CALLBACK_0(HelpLayer::callBack,this));
    		auto sequence=Sequence::create(fade,callback,NULL);
    		tutorial->runAction(sequence);
    		gameName->runAction(fade_2);
    
    	};
    	//上次讲侦听的时候可能没讲,每个侦听都要增加到事件分发器中,就是以下这句代码
    	//第一个參数就是我们的侦听,第二个參数是要加这个侦听的对象
    	//这里我们的点击对象就是这整个层,所以是this
    	_eventDispatcher->addEventListenerWithSceneGraphPriority(listener,this);
    
    
    	return true;
    }
    //移除这两个精灵
    void HelpLayer::callBack()
    {
    	this->removeChild(tutorial);
    	this->removeChild(gameName);
    }
    

    //NumberLayer.h
    #pragma once
    #include "cocos2d.h"
    class NumberLayer:public cocos2d::Layer
    {
    public:
    	NumberLayer();
    	~NumberLayer();
    	bool init();
    	//加分
    	void addScore();
    	//初始化分数
    	void initScore();
    	//获得分数
    	int getScore();
    	//获得单例对象
    	static NumberLayer * getInstance();
    
    private:
    	cocos2d::Label * numberLabel;
    	int score;
    };
    

    //NumberLayer.cpp
    #include "NumberLayer.h"
    USING_NS_CC;
    //唯一存在的自身对象(这边一定要赋初值null),注意是静态的
    static NumberLayer * instance=NULL;
    NumberLayer::NumberLayer()
    {
    }
    
    NumberLayer::~NumberLayer()
    {
    }
    //单例类最主要部分
    NumberLayer * NumberLayer::getInstance()
    {
    	//推断这个对象是否存在
    	if (instance==NULL)
    	{
    		//假设不存在,那就创建
    		NumberLayer * temp=new NumberLayer();
    		//然后初始化
    		temp->init();
    		instance=temp;
    	}
    	//假设已经存在了,那就直接返回
    	return instance;
    }
    
    bool NumberLayer::init()
    {
    	if (!Layer::init())
    	{
    		return false;
    	}
    
    	auto origin=Director::getInstance()->getVisibleOrigin();
    	auto visibleSize=Director::getInstance()->getVisibleSize();
    
    	//初始化分数
    	score=0;
    	//这是自己定义字体的使用
    	auto str=__String::createWithFormat("%d",score);
    	numberLabel=Label::createWithBMFont("font1.fnt",str->getCString());
    	numberLabel->setPosition(Point(origin.x+visibleSize.width/2,origin.y+visibleSize.height*0.85));
    	this->addChild(numberLabel);
    
    
    
    
    	return true;
    }
    
    void NumberLayer::addScore()
    {
    	score++;
    	auto str=__String::createWithFormat("%d",score);
    	numberLabel->setString(str->getCString());
    }
    
    void NumberLayer::initScore()
    {
    	score=0;
    	auto str=__String::createWithFormat("%d",score);
    	numberLabel->setString(str->getCString());
    }
    
    int NumberLayer::getScore()
    {
    	return score;
    }
    

    //GetLocalScore.h
    #pragma once
    #include "cocos2d.h"
    class GetLocalScore
    {
    public:
    	GetLocalScore();
    	~GetLocalScore();
    	static GetLocalScore * getInstance();
    	//推断是否存在本地文件
    	bool isHaveLocalFile();
    	//获取本地文件里的分数
    	int getHighScore();
    	//写入本地文件分数
    	void setHighScore(int);
    private:
    
    };
    


    //GetLocalScore.cpp
    #include "GetLocalScore.h"
    USING_NS_CC;
    static GetLocalScore * instance=NULL;
    GetLocalScore::GetLocalScore()
    {
    
    }
    
    GetLocalScore::~GetLocalScore()
    {
    
    }
    //这边单例就不介绍了
    GetLocalScore * GetLocalScore::getInstance()
    {
    	if (instance==NULL)
    	{
    		GetLocalScore * temp=new GetLocalScore();
    		instance=temp;
    	}
    	return instance;
    }
    
    bool GetLocalScore::isHaveLocalFile()
    {
    	//直接去获取这个值,假设存在,返回true
    	if (UserDefault::getInstance()->getBoolForKey("isHaveLocalFile"))
    	{
    		return true;
    	}
    	else
    	{
    		//假设不存在,那就创建,并写入分数
    		//假设写入的数据是bool型,就用setBoolForKey
    		//假设写入的数据是int型,就用setIntegerForKey
    		//还有别的类型的写入,方法差点儿相同,这里就不介绍了
    		UserDefault::getInstance()->setBoolForKey("isHaveLocalFile",true);
    		UserDefault::getInstance()->setIntegerForKey("highScore",0);
    		UserDefault::getInstance()->flush();
    		return false;
    	}
    }
    //获得分数
    int GetLocalScore::getHighScore()
    {
    	if (isHaveLocalFile())
    	{
    		return UserDefault::getInstance()->getIntegerForKey("highScore");
    	}
    	else
    	{
    		return 0;
    	}
    }
    //写入分数
    void GetLocalScore::setHighScore( int n)
    {
    	if (isHaveLocalFile())
    	{
    		UserDefault::getInstance()->setIntegerForKey("highScore",n);
    		UserDefault::getInstance()->flush();
    	}
    	else
    	{
    		UserDefault::getInstance()->setBoolForKey("isHaveLocalFile",true);
    		UserDefault::getInstance()->setIntegerForKey("highScore",n);
    		UserDefault::getInstance()->flush();
    	}
    }
    

    今天就到这里

    展开全文
  • 学习Halcon之简单车牌识别

    千次阅读 2018-07-08 22:38:39
    首先,获取一张含有车牌的图片后将其转换到灰度空间,由于很难完成一次性对数字的提取,所以先车牌整体区域分割出来,实验中可以发现若直接转成灰度图进行二值化分割效果还是不怎么,所以将其转换为HSV,...

    最近由于要接触halcon就开始学习halcon课程,看得是超人视觉得视频,今天学了车牌识别,觉得使用halcon确实很方便,学习的思路也很重要,所以花点时间记一记。

    首先,获取一张含有车牌的图片后将其转换到灰度空间,由于很难完成一次性对数字的提取,所以先把车牌的整体区域分割出来,实验中可以发现若直接转成灰度图进行二值化分割的效果还是不怎么好的,所以将其转换为HSV,从变量窗口可以看出对其S空间进行操作容易些(对我使用的图片),进行阈值分割后要使用connection()将整体分成各个不同的连通域(阈值分割时尽量不让车牌断开,如果断开再进行拼接),再进行特征分割,使用形态学和填充,这时可以得到车牌大体区域。

    其次,得到车牌区域后,由于车牌并不总是“水平”放置的,所以要使用仿射变换调整图片,在halcon中使用affine_trans_image(...),affine_trans_region(...)函数。

    再者,对上述提取的车牌进行阈值分割,这时需要注意所要识别的字母和数字需为黑,不然识别出错。

    接着就直接上程序了:

    dev_close_window ()
    dev_open_window (0, 0, 512, 512, 'black', WindowHandle)
    **车牌分割
    read_image (Img, 'C:/Users/Logan/Desktop/img.jpeg')
    decompose3 (Img, Img_R, Img_G, Img_B)
    trans_from_rgb (Img_R, Img_G, Img_B, Image_H, Image_S, Image_V, 'hsv')
    threshold (Image_S, Regions, 21, 255)
    connection (Regions, ConnectedRegions)
    select_shape (ConnectedRegions, SelectedRegions, 'area', 'and', 4220.78, 6168.83)
    dilation_rectangle1 (SelectedRegions, RegionDilation, 32, 32)
    area_center (RegionDilation, Area, Row, Column)
    orientation_region (RegionDilation, Phi)
    vector_angle_to_rigid (Row, Column, Phi, Row, Column, 0, HomMat2D)
    affine_trans_image (Img, ImageAffineTrans, HomMat2D, 'constant', 'false')
    affine_trans_region (RegionDilation, RegionAffineTrans, HomMat2D, 'nearest_neighbor')
    reduce_domain (ImageAffineTrans, RegionAffineTrans, ImageReduced)
    
    **字符分割
    rgb1_to_gray (ImageReduced, GrayImage)
    *所识别的数字需为黑色
    invert_image (GrayImage, ImageInvert)
    threshold (GrayImage, Regions1, 183, 242)
    connection (Regions1, ConnectedRegions1)
    select_shape (ConnectedRegions1, SelectedRegions1, 'column', 'and', 282.11, 500)
    sort_region (SelectedRegions1, SortedRegions, 'first_point', 'true', 'column')
    
    read_ocr_class_mlp ('Industrial_0-9A-Z_NoRej.omc', OCRHandle)
    do_ocr_multi_class_mlp (SortedRegions, ImageInvert, OCRHandle, Class, Confidence)
    
    *显示
    smallest_rectangle1 (SortedRegions, Row1, Column1, Row2, Column2)
    count_obj (SortedRegions, Number)
    for i:=1 to Number by 1
        disp_message (WindowHandle, Class[i-1], 'ImageAffineTrans', Row2[i-1], Column1[i-1], 'blue', 'true')
    endfor

    效果图如下:


    展开全文
  • 这里要提示大家一个小技巧:"播放CD时,直接拖拽某歌曲到文件夹,BeoPlayer会自动CD转成WMA格式",给CD提取带来方便! 本版本只适合XP系统使用 下面介绍软件使用: 程序配置 单击“Setup→Configuration”,打开...
  • 深入学习shell脚本艺术

    热门讨论 2011-02-22 04:01:01
    在看到本书英文版后,我决定它翻译出来,在Linuxsir论坛上结识了译者之一杨春敏共同翻译这本书,600多页书是本大部头书,我们花了6个月业余时间才翻译完了。 关于版权问题,英文版作者Mendel Cooper...
  • 利用是双目成像技术,左图和右图合起来提取出空间点,用光流在上面做,就能场景流动分析出来。 光流也可以利用深度学习模型来做,左右两图用同样模型来提取特征,经过计算就能得出一个深度...
  • 3.2.4 如果系综相对于自相关是平稳,一组图像系综自相关矩阵形式是怎么? 154 3.2.5 如何根据一幅图像矢量表达,从1-D 自相关函数得到其2-D 自相关矩阵? 155 3.2.6 如何能变换图像使其自相关矩阵...
  • Axx:ARJ压缩文件的分包序号文件,用于将一个大文件压至几个小的压缩包中(xx取01-99的数字) A3L:Authorware 3.x库文件 A4L:Authorware 4.x库文件 A5L:Authorware 5.x库文件 A3M,A4M:Authorware Macintosh...
  • vc++ 应用源码包_1

    热门讨论 2012-09-15 14:22:12
    一个简单的数字时钟程序,其中的date类派生于MFC CStatic 基类。 CIVStringSet_Demo.zip CIVStringSet_Source.zip 基于MFC和STL平台的字符串类,可以实现在快速字符串搜索。 enum_display_modes_demo.zip enum_...
  • vc++ 应用源码包_2

    热门讨论 2012-09-15 14:27:40
    一个简单的数字时钟程序,其中的date类派生于MFC CStatic 基类。 CIVStringSet_Demo.zip CIVStringSet_Source.zip 基于MFC和STL平台的字符串类,可以实现在快速字符串搜索。 enum_display_modes_demo.zip enum_...
  • vc++ 应用源码包_6

    热门讨论 2012-09-15 14:59:46
    一个简单的数字时钟程序,其中的date类派生于MFC CStatic 基类。 CIVStringSet_Demo.zip CIVStringSet_Source.zip 基于MFC和STL平台的字符串类,可以实现在快速字符串搜索。 enum_display_modes_demo.zip enum_...
  • vc++ 应用源码包_4

    热门讨论 2012-09-15 14:38:35
    一个简单的数字时钟程序,其中的date类派生于MFC CStatic 基类。 CIVStringSet_Demo.zip CIVStringSet_Source.zip 基于MFC和STL平台的字符串类,可以实现在快速字符串搜索。 enum_display_modes_demo.zip enum_...
  • vc++ 应用源码包_5

    热门讨论 2012-09-15 14:45:16
    一个简单的数字时钟程序,其中的date类派生于MFC CStatic 基类。 CIVStringSet_Demo.zip CIVStringSet_Source.zip 基于MFC和STL平台的字符串类,可以实现在快速字符串搜索。 enum_display_modes_demo.zip enum_...
  • vc++ 应用源码包_3

    热门讨论 2012-09-15 14:33:15
    一个简单的数字时钟程序,其中的date类派生于MFC CStatic 基类。 CIVStringSet_Demo.zip CIVStringSet_Source.zip 基于MFC和STL平台的字符串类,可以实现在快速字符串搜索。 enum_display_modes_demo.zip enum_...

空空如也

空空如也

1 2
收藏数 22
精华内容 8
关键字:

怎么把图片的数字提取出来