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 ...
随机推荐
- 实战-快手H5字体反爬
实战-快手H5字体反爬 前言 快手H5端的粉丝数是字体反爬,抓到的html文本是乱码 <SPAN STYLE='FONT-FAMILY: kwaiFont;'></SPA ...
- Java(3)基本数据类型及其类型转换
作者:季沐测试笔记 原文地址:https://www.cnblogs.com/testero/p/15201501.html 博客主页:https://www.cnblogs.com/testero ...
- MC-BE基岩版服务器搭建与日常维护
有部分内容被csdn和谐,强烈建议移步我的个人博客以获得更好的排版和阅读体验: xzajyjs.cn. 目录 环境搭建 开始部署 日常维护 服务器的白名单机制 定时备份 服务器升级 服务器模组安装 搭 ...
- Golang通脉之map
Go语言中提供的映射关系容器为map,其内部使用散列表(hash)实现. map 是一种无序的键值对的集合.map 最重要的一点是通过 key 来快速检索数据,key 类似于索引,指向数据的值 map ...
- 深入理解java中main方法
理解main方法语法 深入理解main方法: 解释main方法的形式:public static void main(String[] args){} main方法调用者:虚拟机 java虚拟机需要调 ...
- 学了ES6,还不会Promise的链式调用?🧐
前言 本文主要讲解promise的链式调用的方法及其最终方案 应用场景 假如开发有个需求是先要请求到第一个数据,然后根据第一个数据再去请求第二个数据,再根据第二个数据去请求第三个数据...一直到最后得 ...
- try-catch-finally面试题
try catch finally 执行顺序面试题总结 执行顺序 今天牛客网遇到这个题目,做对了,但是下面的评论却很值得看看 public class TestTry { public int add ...
- 第2次 Beta Scrum Meeting
本次会议为Beta阶段第2次Scrum Meeting会议 会议概要 会议时间:2021年5月31日 会议地点:「腾讯会议」线上进行 会议时长:0.5小时 会议内容简介:对完成工作进行阶段性汇报:对下 ...
- [no_code团队]项目介绍 & 需求分析 & 发布预测
项目 内容 2020春季计算机学院软件工程(罗杰 任健) 博客园班级博客 作业要求 团队项目选择 我们在这个课程的目标是 在团队合作中提升软件开发水平 这个作业在哪个具体方面帮助我们实现目标 进行项目 ...
- springcloud整合seata
springcloud整合seata 一.背景 二.项目结构 三.实现功能: 四.项目使用到的技术 五.整合步骤 1.引入spring-cloud-starter-alibaba-seata jar包 ...