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列表(list)常用操作方法小结
Feb 02 Python
浅谈numpy中linspace的用法 (等差数列创建函数)
Jun 07 Python
Python调用微信公众平台接口操作示例
Jul 08 Python
Python实现将文本生成二维码的方法示例
Jul 18 Python
解决python3 urllib 链接中有中文的问题
Jul 16 Python
pandas数据筛选和csv操作的实现方法
Jul 02 Python
Python实现个人微信号自动监控告警的示例
Jul 03 Python
Python3 翻转二叉树的实现
Sep 30 Python
python标识符命名规范原理解析
Jan 10 Python
python中Django文件上传方法详解
Aug 05 Python
Python爬虫之Selenium中frame/iframe表单嵌套页面
Dec 04 Python
pycharm 多行批量缩进和反向缩进快捷键介绍
Jan 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
用PHP中的 == 运算符进行字符串比较
2006/11/26 PHP
PHP实现用户认证及管理完全源码
2007/03/11 PHP
PHP下操作Linux消息队列完成进程间通信的方法
2010/07/24 PHP
yiic命令时提示“php.exe”不是内部或外部命令的解决方法
2014/12/18 PHP
使用GDB调试PHP代码,解决PHP代码死循环问题
2015/03/02 PHP
非常有用的9个PHP代码片段
2016/04/06 PHP
PHP学习记录之常用的魔术常量详解
2019/12/12 PHP
javascript sudoku 数独智力游戏生成代码
2010/03/27 Javascript
js实现瀑布流的一种简单方法实例分享
2013/11/04 Javascript
Jquery中的层次选择器与find()的区别示例介绍
2014/02/20 Javascript
分享我的jquery实现下拉菜单心的
2015/11/29 Javascript
AngularJS directive返回对象属性详解
2016/03/28 Javascript
jQuery中 bind的用法简单介绍
2017/02/13 Javascript
jquery实现点击a链接,跳转之后,该a链接处显示背景色的方法
2018/01/18 jQuery
Bootstrap Fileinput 4.4.7文件上传实例详解
2018/07/25 Javascript
js自定义input文件上传样式
2018/10/26 Javascript
vue-resource post数据时碰到Django csrf问题的解决
2020/03/13 Javascript
[00:52]DOTA2第二届亚洲邀请赛预选赛宣传片
2017/01/13 DOTA
[41:21]夜魇凡尔赛茶话会 第三期02:看图识人
2021/03/11 DOTA
python进阶教程之函数参数的多种传递方法
2014/08/30 Python
Python实现读取文件最后n行的方法
2017/02/23 Python
读取本地json文件,解析json(实例讲解)
2017/12/06 Python
Python解决抛小球问题 求小球下落经历的距离之和示例
2018/02/01 Python
django 发送邮件和缓存的实现代码
2018/07/18 Python
Python 判断奇数偶数的方法
2018/12/20 Python
python将txt文档每行内容循环插入数据库的方法
2018/12/28 Python
python 实现绘制整齐的表格
2019/11/18 Python
python找出列表中大于某个阈值的数据段示例
2019/11/24 Python
在flask中使用python-dotenv+flask-cli自定义命令(推荐)
2020/01/05 Python
查看keras的默认backend实现方式
2020/06/19 Python
python线程池 ThreadPoolExecutor 的用法示例
2020/10/10 Python
施华洛世奇加拿大官网:SWAROVSKI加拿大
2018/06/03 全球购物
毕业自我评价
2014/02/05 职场文书
网球场地租赁协议范本
2014/10/07 职场文书
2014年房地产工作总结范文
2014/11/19 职场文书
java设计模式--原型模式详解
2021/07/21 Java/Android