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 ...
随机推荐
- bash是什么?
bash shell就是一个bash程序 --解释器,启动器 --解释器: 用户交互输入 如vim 文本文件输入 脚本本质: !/bin/bash !/usr/bin/python 读取方 ...
- 实现线程按顺序输出ABC
线程按顺序输出ABC 实现描述:建立三个线程A.B.C,分别按照顺序输出十次ABC 首先建立一个方法,按照条件进行输出 class PrintABC{ private int index=0; pub ...
- Unity——FSM有限状态机
FSM有限状态机 一.设计思路 1.共同的状态父类,提供可重写的进入,保持,退出该状态的生命周期方法: 2.状态机,管理所有状态(增删查改),状态机运行方法(Run): 3.在角色控制器中,实例化状态 ...
- linux 安装libreOffice
linux 安装libreOffice 第一种方式:通过yum install libreoffice* 安装,但在使用docx文档转化为pdf的过程中,发现有些表格样式出现变形,因此采用如下方式安装 ...
- 阿里云研究员叔同:Serverless 正当时!
作者 | 叔同 导读:Serverless 将开发人员从繁重的手动资源管理和性能优化中解放出来,就像数十年前汇编语言演变到高级语言的过程一样,云计算生产力再一次发生变革.Serverless 的核心价 ...
- v72.01 鸿蒙内核源码分析(Shell解析) | 应用窥伺内核的窗口 | 百篇博客分析OpenHarmony源码
子曰:"苟正其身矣,于从政乎何有?不能正其身,如正人何?" <论语>:子路篇 百篇博客系列篇.本篇为: v72.xx 鸿蒙内核源码分析(Shell解析篇) | 应用窥视 ...
- Get Mingw-w64 via MSYS2
Get Mingw-w64 via MSYS2 Get the latest version of Mingw-w64 via MSYS2, which provides up-to-date nat ...
- 【UE4 C++】绘制函数 Debug drawing functions
基于UKismetSystemLibrary /** Draw a debug line */ UFUNCTION(BlueprintCallable, Category="Renderin ...
- Alpha-功能规格说明书
项目 内容 这个作业属于哪个课程 2021春季软件工程(罗杰 任健) 这个作业的要求在哪里 团队项目-计划-功能规格说明书 一.引言 1. 项目简介 项目团队:删库跑路对不队 项目名称:题士 项目内容 ...
- [对对子队]会议记录5.19(Scrum Meeting6)
今天已完成的工作 吴昭邦 工作内容:搭建第9关 相关issue:搭建关卡7.8.9 相关签入:feat: 第9关能够通过 何瑞 工作内容:搭建第9关 相关issue:搭建关卡7.8 ...