python3+openCV 获取图片中文本区域的最小外接矩形实例


Posted in Python onJune 02, 2020

我就废话不多说了,大家还是直接看代码吧!

print("thresh =",thresh)
coords = np.column_stack(np.where(thresh > 0))//获取thresh二值灰度图片中的白色文字区域的点
print("coords =",coords)

min_rect = cv2.minAreaRect(coords)//由点集获取最小矩形(包含中心坐标点、宽和高、偏转角度)
print("min_rec =",min_rect)
box = cv2.boxPoints(min_rect)//获取最小矩形的4个顶点坐标。

但是通过一下这个绘制矩形函数,画出来上述的最小矩形与文字区域偏差很大,但是获取到的偏转角度是对的。

不明白他们什么关系啊?

#  根据四点画原矩形
def drawRect(img, pt1, pt2, pt3, pt4, color, lineWidth):
  cv2.line(img, tuple(pt1), tuple(pt2), color, lineWidth)
  cv2.line(img, tuple(pt2), tuple(pt3), color, lineWidth)
  cv2.line(img, tuple(pt3), tuple(pt4), color, lineWidth)
  cv2.line(img, tuple(pt1), tuple(pt4), color, lineWidth)

有哪路朋友路过,帮一下忙,给指点一二,多谢朋友

附实验问题截图:

python3+openCV 获取图片中文本区域的最小外接矩形实例

补充知识:opencv2 3.2 类中实现提取蓝天颜色

我就废话不多说了,大家还是直接看代码吧!

#include<iostream>
#include<opencv2/core/core.hpp>
#include<opencv2/highgui/highgui.hpp>
using namespace std;
using namespace cv;

class ColorDetector{

private:
int maxDist; //最小差距
Vec3b target ; //目标颜色
Mat result;
public:
ColorDetector():maxDist(100),target(0,0,0)
{

}
void setColorDistanceThreshold(int distance) //设置颜色差距的阈值
{
if(distance<0)
distance=0;
maxDist=distance;
}
int getColorDistanceThreshold() const //取得颜色差距的阈值
{
return maxDist;
}

void setTargetColor(uchar blue,uchar green,uchar red) //设置需要检测的颜色
{
target=Vec3b(blue,green,red);
}

void setTargetColor(Vec3b color)
{
target=color;
}

Vec3b getTargetColor() const
{
return target;
}
Mat process(const cv::Mat &image) ;
int getDistance(const Vec3b &color) ;
};

Mat ColorDetector::process(const cv::Mat &image) 
{
result.create(image.rows,image.cols,CV_8U);
Mat_<Vec3b>::const_iterator it=image.begin<Vec3b>();
Mat_<Vec3b>::const_iterator itend=image.end<Vec3b>();
Mat_<uchar>::iterator itout=result.begin<uchar>();
for ( ; it!= itend; ++it, ++itout) 
{
if (getDistance(*it)<maxDist) 
{
*itout=255;
} 
else 
{
*itout=0;
}
}
return result;
}

int ColorDetector::getDistance(const Vec3b &color) 
{
return abs(color[0]-target[0])+
abs(color[1]-target[1])+
abs(color[2]-target[2]);
}
void main()
{
ColorDetector cdetect;
Mat img=imread("C:\\Users\\Administrator\\Desktop\\工作\\testp\\boldt.jpg");
if(img.empty())
return;

cdetect.setTargetColor(230,190,130);

imshow("original",img);
imshow("result",cdetect.process(img));
waitKey(0);
}

以上这篇python3+openCV 获取图片中文本区域的最小外接矩形实例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python编程中的异常处理教程
Aug 21 Python
Python随机生成数据后插入到PostgreSQL
Jul 28 Python
Python编程给numpy矩阵添加一列方法示例
Dec 04 Python
python微信跳一跳系列之自动计算跳一跳距离
Feb 26 Python
Python学习小技巧总结
Jun 10 Python
Django框架的中的setting.py文件说明详解
Oct 15 Python
python利用selenium进行浏览器爬虫
Apr 25 Python
Django使用中间键实现csrf认证详解
Jul 22 Python
在tensorflow中设置保存checkpoint的最大数量实例
Jan 21 Python
python实现的分层随机抽样案例
Feb 25 Python
python 解决Windows平台上路径有空格的问题
Nov 10 Python
python中四舍五入的正确打开方式
Jan 18 Python
python编写一个会算账的脚本的示例代码
Jun 02 #Python
使用opencv识别图像红色区域,并输出红色区域中心点坐标
Jun 02 #Python
什么是Python中的顺序表
Jun 02 #Python
opencv 实现特定颜色线条提取与定位操作
Jun 02 #Python
Python爬虫入门有哪些基础知识点
Jun 02 #Python
Python实现进度条和时间预估的示例代码
Jun 02 #Python
python爬虫容易学吗
Jun 02 #Python
You might like
解决中英文字符串长度问题函数
2007/01/16 PHP
php 无限极分类
2008/03/27 PHP
PHP查询MySQL大量数据的时候内存占用分析
2011/07/22 PHP
win7下memCache的安装过程(具体操作步骤)
2013/06/28 PHP
PHP闭包实例解析
2014/09/08 PHP
PHP简单检测网址是否能够正常打开的方法
2016/09/04 PHP
JavaScript CSS修改学习第三章 修改样式表
2010/02/19 Javascript
基于jquery的代码显示区域自动拉长效果
2011/12/07 Javascript
JS代码优化技巧之通俗版(减少js体积)
2011/12/23 Javascript
jquery 提示信息显示后自动消失的具体实现
2013/12/18 Javascript
JQuery实现当鼠标停留在某区域3秒后自动执行
2014/09/09 Javascript
jquery实现图片左右切换的方法
2015/05/07 Javascript
JS扩展类,克隆对象与混合类实例分析
2016/11/26 Javascript
基于jquery二维码生成插件qrcode
2017/01/07 Javascript
基于Bootstrap框架实现图片切换
2017/03/10 Javascript
ES6中箭头函数的定义与调用方式详解
2017/06/02 Javascript
详解vue-meta如何让你更优雅的管理头部标签
2018/01/18 Javascript
Vue中的情侣属性$dispatch和$broadcast详解
2019/03/07 Javascript
微信小程序实现折线图的示例代码
2019/06/07 Javascript
ES6 Object方法扩展的应用实例分析
2019/06/25 Javascript
vue实现在线预览pdf文件和下载(pdf.js)
2019/11/26 Javascript
Vue作用域插槽实现方法及作用详解
2020/07/08 Javascript
videocapture库制作python视频高速传输程序
2013/12/23 Python
使用python的chardet库获得文件编码并修改编码
2014/01/22 Python
编写Python脚本把sqlAlchemy对象转换成dict的教程
2015/05/29 Python
selenium+python 去除启动的黑色cmd窗口方法
2018/05/22 Python
Python面向对象类的继承实例详解
2018/06/27 Python
Python语言检测模块langid和langdetect的使用实例
2019/02/19 Python
tensorflow如何批量读取图片
2019/08/29 Python
如何用Python 实现全连接神经网络(Multi-layer Perceptron)
2020/10/15 Python
学生学习总结的自我评价
2013/10/22 职场文书
群众路线教育实践活动方案
2014/10/31 职场文书
幼师中班个人总结
2015/02/12 职场文书
银行自荐信范文
2015/03/25 职场文书
MySQL范围查询优化的场景实例详解
2022/06/10 MySQL
JavaScript前端面试扁平数据转tree与tree数据扁平化
2022/06/14 Javascript