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类属性与实例属性用法分析
May 09 Python
Python中转换角度为弧度的radians()方法
May 18 Python
Python去除字符串两端空格的方法
May 21 Python
利用Python实现在同一网络中的本地文件共享方法
Jun 04 Python
Python 中包/模块的 `import` 操作代码
Apr 22 Python
详解Python 4.0 预计推出的新功能
Jul 26 Python
python3文件复制、延迟文件复制任务的实现方法
Sep 02 Python
Python中join()函数多种操作代码实例
Jan 13 Python
Python实现UDP程序通信过程图解
May 15 Python
如何在mac下配置python虚拟环境
Jul 06 Python
Python3爬虫ChromeDriver的安装实例
Feb 06 Python
详解Flask开发技巧之异常处理
Jun 15 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
超神学院:鹤熙已踏入神圣领域,实力不比凯莎弱
2020/03/02 国漫
php中get_cfg_var()和ini_get()的用法及区别
2015/03/04 PHP
PHP利用APC模块实现大文件上传进度条的方法
2015/10/29 PHP
PHP后台微信支付和支付宝支付开发
2017/04/28 PHP
动态修改DOM 里面的 id 属性的弊端分析
2008/09/03 Javascript
JavaScript DOM学习第四章 getElementByTagNames
2010/02/19 Javascript
jquery 锁定弹出层实现代码
2010/02/23 Javascript
jquery序列化form表单使用ajax提交后处理返回的json数据
2014/03/03 Javascript
深入探究使JavaScript动画流畅的一些方法
2015/06/30 Javascript
jQuery实现大图轮播
2017/02/13 Javascript
基于JavaScript实现无限加载瀑布流
2017/07/21 Javascript
vue组件初学_弹射小球(实例讲解)
2017/09/06 Javascript
微信小程序 页面跳转事件绑定的实例详解
2017/09/20 Javascript
vue addRoutes实现动态权限路由菜单的示例
2018/05/15 Javascript
浅谈Vue.js路由管理器 Vue Router
2018/08/16 Javascript
对angular2中的ngfor和ngif指令嵌套实例讲解
2018/09/12 Javascript
javascript设计模式之迭代器模式
2020/01/30 Javascript
原生JavaScript实现五子棋游戏
2020/11/09 Javascript
Node.js 中如何收集和解析命令行参数
2021/01/08 Javascript
wxPython框架类和面板类的使用实例
2014/09/28 Python
Python使用正则表达式实现文本替换的方法
2017/04/18 Python
在python中使用with打开多个文件的方法
2019/01/07 Python
详解Python做一个名片管理系统
2019/03/14 Python
python实现从ftp上下载文件的实例方法
2020/07/19 Python
欧姆龙医疗保健与医疗产品:Omron Healthcare
2020/02/10 全球购物
C++面试题目
2013/06/25 面试题
linux面试题参考答案(4)
2013/01/28 面试题
如何反序的迭代一个序列?how do I iterate over a sequence in reverse order
2012/02/04 面试题
党校个人自我鉴定范文
2014/03/28 职场文书
全国税务系统先进集体事迹材料
2014/05/19 职场文书
四风问题个人对照检查剖析材料
2014/09/27 职场文书
2015年汽车销售工作总结
2015/04/07 职场文书
2015中秋节晚会主持词
2015/07/01 职场文书
浅谈JS的二进制家族
2021/05/09 Javascript
OpenCV-Python实现怀旧滤镜与连环画滤镜
2021/06/09 Python
Redis数据同步之redis shake的实现方法
2022/04/21 Redis