python实现超大图像的二值化方法
一,分块处理超大图像的二值化问题
(1) 全局阈值处理
(2) 局部阈值
二,空白区域过滤
三,先缩放进行二值化,然后还原大小
np.mean() 返回数组元素的平均值
np.std() 返回数组元素的标准差
一,分块处理超大图像的二值化问题
(1) 全局阈值处理
(2) 局部阈值
1 import cv2 as cv
2 import numpy as np
3
4 """
5 def big_image_binary(image):
6 print(image.shape) #(4208, 2368, 3) #超大图像,屏幕无法显示完整
7 cw,ch = 256,256
8 h,w = image.shape[:2]
9 gray = cv.cvtColor(image,cv.COLOR_RGB2GRAY) #要二值化图像,要先进行灰度化处理
10 for row in range(0,h,ch):
11 for col in range(0,w,cw):
12 roi = gray[row:row+ch,col:col+cw] #获取分块
13 #全局阈值
14 # ret,binary = cv.threshold(roi,0,255,cv.THRESH_BINARY|cv.THRESH_OTSU)
15
16
17 #局部阈值
18 binary = cv.adaptiveThreshold(roi,255,cv.ADAPTIVE_THRESH_GAUSSIAN_C,cv.THRESH_BINARY,127,20)
19 gray[row:row + ch, col:col + cw] = binary #分块覆盖
20 print(np.std(binary),np.mean(binary))
21
22 cv.imwrite("binary2.jpg",gray)
二,空白区域过滤
1 #空白区域过滤
2 def big_image_binary(image):
3 print(image.shape)
4 # 分成小块,每一块的宽高
5 cw = 256
6 ch = 256
7 #整个图像的宽高
8 h, w = image.shape[:2]
9 gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
10 #步长 ch cw
11 for row in range(0, h, ch):
12 for col in range(0, w, cw):
13 #获取分块(感兴趣区域)
14 roi = gray[row:row+ch, col:cw+col]
15 print(np.std(roi), np.mean(roi))
16 dev = np.std(roi)
17 if dev < 15:
18 gray[row:row + ch, col:cw + col] = 255 #dev < 15的让它变白
19 else:
20 ret, dst = cv.threshold(roi, 0, 255, cv.THRESH_BINARY | cv.THRESH_OTSU)
21 gray[row:row + ch, col:cw + col] = dst
22 cv.imwrite("D:/vcprojects/result_binary.png", gray)
23
24
25 print("--------- Python OpenCV Tutorial ---------")
26 src = cv.imread("D:/vcprojects/images/red_text2.png")
27 #cv.namedWindow("input image", cv.WINDOW_AUTOSIZE)
28 #cv.imshow("input image", src)
29 big_image_binary(src)
30 cv.waitKey(0)
31
32 cv.destroyAllWindows()
33 big_image_binary(src)
34 cv.waitKey(0)
35
36 cv.destroyAllWindows()
参考:
https://blog.csdn.net/weixin_41722450/article/details/104265595
python实现超大图像的二值化方法的更多相关文章
- OpenCV图像的二值化
图像的二值化: 与边缘检测相比,轮廓检测有时能更好的反映图像的内容.而要对图像进行轮廓检测,则必须要先对图像进行二值化,图像的二值化就是将图像上的像素点的灰度值设置为0或255,这样将使整个图像呈现出 ...
- OpenCV中对图像进行二值化的关键函数——cvThreshold()。
函数功能:采用Canny方法对图像进行边缘检测 函数原型: void cvThreshold( const CvArr* src, CvArr* dst, double threshold, doub ...
- 二值化方法:Kittler:Minimum Error Thresholding
Kittler二值化方法,是一种经典的基于直方图的二值化方法.由J. Kittler在1986年发表的论文“Minimum Error Thresholding”提出.论文是对贝叶斯最小错误阈值的准则 ...
- 数学思想方法-python计算战(8)-机器视觉-二值化
二值化 hreshold Applies a fixed-level threshold to each array element. C++: double threshold(InputArray ...
- 实现图像的二值化(java+opencv)
书里的解释: 其他的没找到什么资料,直接参考百度百科 https://baike.baidu.com/item/%E5%9B%BE%E5%83%8F%E4%BA%8C%E5%80%BC%E5%8C%9 ...
- [python-opencv]超大图像二值化方法
*分块 *全局阈值 VS 局部阈值 import cv2 as cv import numpy as np def big_image_binary(image): print(image.shape ...
- opencv 对RGB图像直接二值化
#include <opencv2/opencv.hpp> #include <iostream> using namespace cv; using namespace st ...
- python 读取、保存、二值化、灰度化图片+opencv处理图片的方法
http://blog.csdn.net/johinieli/article/details/69389980
- OpenCV---超大图像二值化和空白区域过滤
超大图像的二值化方法 1.可以采用分块方法, 2.先缩放处理就行二值化,然后还原大小 一:分块处理超大图像的二值化问题 def big_image_binary(image): print(image ...
随机推荐
- 使用Golang搭建gRPC服务提供给.NetCore客户端调用
目录 gRPC概述 RPC gRPC又是什么呢 安装 Golang IDE(Goland) Protocol Buffer 下载Protocal Buffer 配置Protocal Buffer编译器 ...
- 飞猪基于 Serverless 的云+端实践与思考
作者 | 王恒飞(承荫) 本文整理自飞猪旅行前端技术专家--王恒飞(承荫)在[阿里云 Serverless Developer Meetup 上海站]上的分享.点击查看直播回放:https://dev ...
- 无服务计算应用场景探讨及 FaaS 应用实战
作者 | 宋文龙(闻可) 阿里云全球技术服务部高级交付专家 什么是无服务计算 无服务器计算(Serverless Computing)在构建和运行应用时无需管理服务器等基础设施.它描述了一个细粒度的 ...
- 洛谷4366——最短路(dijkstra,思维,异或)
题目大意 给定一个n个点,m条边的图,每条边有边权,而每个点\(i\)也可以直接到达\(j\),代价是\(i\ xor\ j\),给定一个S和T,求S到T的最小代价 其中\(n\le100000,m\ ...
- FastAPI 学习之路(十四)响应模型
系列文章: FastAPI 学习之路(一)fastapi--高性能web开发框架 FastAPI 学习之路(二) FastAPI 学习之路(三) FastAPI 学习之路(四) FastAPI 学习之 ...
- Kubernetes Job Controller 原理和源码分析(一)
概述什么是 JobJob 入门示例Job 的 specPod Template并发问题其他属性 概述 Job 是主要的 Kubernetes 原生 Workload 资源之一,是在 Kubernete ...
- GIS应用|快速开发REST数据服务
随着计算机的快速发展,GIS已经在各大领域得到应用,和我们的生活息息相关, 但是基于GIS几大厂商搭建服务,都会有一定的门槛,尤其是需要server,成本高,难度大,这里介绍一种在线GIS云平台,帮你 ...
- 手把手教你学Dapr - 1. .Net开发者的大时代
Dapr全称 Distributed Application Runtime,分布式应用运行时 Dapr的口号 简化云原生应用开发,聚焦在应用的核心逻辑,让代码简单.可移植 Dapr的目标 最佳实践的 ...
- Beta阶段初始任务分配
项目 内容 这个作业属于哪个课程 2021春季软件工程(罗杰 任健) 这个作业的要求在哪里 团队项目-计划-Beta阶段说明书 一.Beta阶段总体规划 根据用户反馈与测试结果修复alpha版本的bu ...
- 聊聊 Kubernetes Pod or Namespace 卡在 Terminating 状态的场景
这个话题,想必玩过kubernetes的同学当不陌生,我会分Pod和Namespace分别来谈. 开门见山,为什么Pod会卡在Terminationg状态? 一句话,本质是API Server虽然标记 ...