opencv(一):图像规整

在使用Caffe模型测试手写字符时,由于测试集与训练集图片风格不一致,导致准确率降低。本文介绍了一种图像预处理方法,通过OpenCV进行图像规整,包括转为灰度图、自适应二值化、黑白反转、查找最大连通域等步骤,最终提取并调整字符区域大小。代码实现中涉及了cvtColor、findContours、resize等关键函数。
摘要由CSDN通过智能技术生成

前言

在使用caffe训练好的模型测试手写字符图片的时候,发现测试集图片和训练集图片在样式上不太一致,导致测试准确率很低。所以在测试之前需要对图片预处理使其规整。

基本思路

读入一幅图片-》将其转换为灰度图-》将其进行自适应二值化-》将图片进行黑白反转,以保持与训练集一致-》查找图片中的最大连通域-》在原图上框出最大连通域的外接矩形-》取出感兴趣的字符区域-》采用三种方式将取出的字符区域图片变换成原来的大小。

代码实现

运行环境:vs2010+opencv2.4.10
采用的主要函数汇总:
cvtColor();颜色空间转换;
adaptiveThreshold();自适应二值化
findContours();提取轮廓
contourArea();计算轮廓面积
boundingRect();计算轮廓的垂直边界最小矩形
rectangle();画矩形
resize();图像缩放
具体代码如下:

#include<iostream>
#include<opencv2/opencv.hpp>
#include<opencv2/core/core.hpp>
#include<opencv2/highgui/highgui.hpp>
using namespace cv;
int main()
{
    Mat img=imread("1.png");
    //判断图片是否正确读入
    if(img.empty())
    {
        std::cout<<"read error!"<<std::endl;
        return -1;
    }
    namedWindow("原图");
    imshow("原图", img);
    //将彩色图转换成灰度图
    Mat sample;
    cvtColor(img, sample, COLOR_BGR2GRAY);
    //将图片进行自适应二值化
    int threshold_type=CV_THRESH_BINARY;
    int adaptive_method=CV_ADAPTIVE_THRESH_GAUSSIAN_C;
    int blocksize=31;
    double offset=15;
    Ma
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值