【OpenCv】(python)超大图像的二值化方法(空白过滤)

python检测空白文档(无内容)图片 # coding: utf-8 #python检测“无内容”图片 #通过图像熵检测,无内容图像熵较小,可通过设置阈值检测无内容图像 import cv2 import numpy as np import math import time import os import shutil def get_entropy(img_): x, y = img_.shape[0:2] img_ = cv2.resize(img_, (100, 100)) # 缩小的目的是加快计算速度 tmp 阅读详情

超大图像的二值化方法

(1).可以采用分块方法,

(2).先缩放处理就行二值化,然后还原大小

1、局部阈值、全局阈值

import cv2 as cv
import numpy as np

"""
def big_image_binary(image):
    print(image.shape)  #(4208, 2368, 3)  #超大图像,屏幕无法显示完整
    cw,ch = 256,256
    h,w = image.shape[:2]
    gray = cv.cvtColor(image,cv.COLOR_RGB2GRAY)   #要二值化图像,要先进行灰度化处理
    for row in range(0,h,ch):
        for col in range(0,w,cw):
            roi = gray[row:row+ch,col:col+cw]   #获取分块
            #全局阈值
            # ret,binary = cv.threshold(roi,0,255,cv.THRESH_BINARY|cv.THRESH_OTSU)
           

            #局部阈值  
            binary = cv.adaptiveThreshold(roi,255,cv.ADAPTIVE_THRESH_GAUSSIAN_C,cv.THRESH_BINARY,127,20)  
            gray[row:row + ch, col:col + cw] = binary  #分块覆盖
            print(np.std(binary),np.mean(binary))

    cv.imwrite("binary2.jpg",gray)

“”"

2、空白区域过滤

#空白区域过滤
def big_image_binary(image):
    print(image.shape)
    # 分成小块,每一块的宽高
    cw = 256
    ch = 256
    #整个图像的宽高
    h, w = image.shape[:2]
    gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
    #步长 ch cw
    for row in range(0, h, ch):
        for col in range(0, w, cw):
            #获取分块(感兴趣区域)
            roi = gray[row:row+ch, col:cw+col]
            print(np.std(roi), np.mean(roi))
            dev = np.std(roi)
            if dev < 15:
                gray[row:row + ch, col:cw + col] = 255   #dev < 15的让它变白
            else:
                ret, dst = cv.threshold(roi, 0, 255, cv.THRESH_BINARY | cv.THRESH_OTSU)
                gray[row:row + ch, col:cw + col] = dst
    cv.imwrite("D:/vcprojects/result_binary.png", gray)


print("--------- Python OpenCV Tutorial ---------")
src = cv.imread("D:/vcprojects/images/red_text2.png")
#cv.namedWindow("input image", cv.WINDOW_AUTOSIZE)
#cv.imshow("input image", src)
big_image_binary(src)
cv.waitKey(0)

cv.destroyAllWindows()
big_image_binary(src)
cv.waitKey(0)

cv.destroyAllWindows()

原图:

在这里插入图片描述

全局阈值效果:

在这里插入图片描述

全局阈值过滤掉噪点效果:【上一张图全局阈值右边还有噪点 过滤后噪点消失】

在这里插入图片描述

高斯C方法局部阈值效果:
在这里插入图片描述

补充知识点:

#np.std()  标准差 
#np.mean() 均值
>>> a = np.array([[1, 2], [3, 4]])  
>>> np.std(a) # 计算矩阵全局标准差  
1.1180339887498949
>>> np.std(a) # 计算矩阵全局标准差
2.5
>>> np.std(a, axis=0) # axis=0计算每一列的标准差  
array([ 1., 1.]) 
>>> np.std(a, axis=1) # 计算每一行的标准差  array([ 0.5, 0.5])
复制代码
python+opencv图像处理(提取矩形方框 提取颜色 滤波 轮廓检测 直线检测) 一、依赖 如果你的python环境没有这些包,则需要安装 pip install numpy \ opencv-python \ pillow 二、使用指南 1、基本信息 近期由于项目需要,需要使用python的opencv库处理图像,在下面的代码中使用了很多cv2的库函数,对这些函数进行了封装,可以直接拷贝调用.项目地址 该部分有两个文件构成 main.py 和  replace.py 运行... 阅读详情

相关推荐

图像处理--OpenCV实现图像加噪与滤波

今天来学习一下如何使用OpenCV实现图像加噪与滤波,欢迎大家一起参与探讨交流

拥有百余位万粉技术博主、200余位可合作代发博主,私域技术社群规模达千人,商务合作私信 1万+

Python将彩色图像转为灰度图像

Python的cv2库中自带彩色转灰度的方法,而且非常简单,代码就9行,核心代码就1行。 大题思路就是先读取一张彩色图片,然后在窗口中显示出来,再然后就让cv2处理一下,转换成灰度图像,这时候它是个二维的灰度矩阵,所以,我们想保存得先将它从array转成image,最后在另一个窗口中显示出来,为了避免窗口一闪而过,我们需要加上waitKey(0)这一句。 import cv2 from PIL import Image #读取彩色图像 color_img = cv2.imread(r'dataset3/

振华OPPO的博客世界 1万+

python+opencv怎么提取二值化图像的白色方格的区域?

🏆本文收录于 《全栈Bug调优(实战版)》 专栏,该专栏专注于分享我在真实项目开发中遇到的各类疑难Bug及其深层成因,并系统提供高效、可复现的解决思路和实操方案。无论你是刚入行的新手开发者,还是拥有多年项目经验的资深工程师,本专栏都将为你提供一条系统化、高质量的问题排查与优化路径,助力你加速成长,攻克技术壁垒,迈向技术价值最大化与职业发展的更高峰🚀!    📌 特别说明: 文中部分技术问题来源于真实生产环境及网络公开案例,均经过精挑细选与系统化整理,并结合多位一线资深架构师和工程师多年实战经验沉淀,提

**My Coding Family** 1240

[学习opencv](opencv)去除图像中白的边界干扰

C++- opencv//去除图像中白的边界干扰 way-2速度快 Mat lookUpTable(1, 256, CV_8U); uchar *p = lookUpTable.data; for(int i=0; i&lt;256; i++) { if(i&gt;=240) { p[i]=0; } else { p[i]=i; } } //通过LUT函数实现图像取反 LUT(...

开源节流 8339

OpenCV-Python实战(9)——OpenCV用于图像分割的阈值技术

图像分割是许多计算机视觉应用中的关键处理步骤,通常用于将图像划分为不同的区域,这些区域常常对应于真实世界的对象。因此,图像分割是图像识别和内容分析的重要步骤。图像阈值是一种简单、有效的图像分割方法,其中像素根据其强度值进行分区。在本文中,将介绍 OpenCV 所提供的主要阈值技术,可以将这些技术用作计算机视觉应用程序中图像分割的关键部分。

盼小辉丶的博客 2万+

dmx512协议c语言编程,DMX512协议+c程序代码.pdf

DMX512 协议1.协议简介DMX 是Digital MultipleX 的缩写 ,意为多路数字传输。DMX512 控制协议是美国舞台灯光协会(USITT)于1990 年发布的灯光控制器与灯具设备进行数据传输的工业标准 ,全称是 USITT DMX512(1990) ,包括电气特性、数据协议、数据格式等方面的内容。2. 电气特性和物理层2.1. 电气特...

weixin_39928993的博客 2545

OpenCV图像分割与分水岭算法(C++)

我们将一个如何使用距离变换和分水岭分割相互接触的物体的例子。 考虑一下下面的硬币图像,这些硬币相互接触。即使你去阈值化它,它也会互相碰触。 我们从找到硬币的大概估计值开始。为此,我们可以利用大津的二值化。 #include<iostream> #include<opencv2\opencv.hpp> using namespace std; using nam...

进击的Explorer 3282

【LCMM实战指南】从增长混合模型到潜在类别轨迹分析的纵向数据建模

本文深入解析了LCMM(潜在类别混合模型)在纵向数据建模中的应用,对比了LCGA与GMM的核心差异与选择策略。通过R语言lcmm包的实战演练,详细展示了从数据模拟、模型拟合、类别数选择到结果解读的全流程,为识别数据中不同的发展轨迹亚型提供了系统指南。

weixin_29070861的博客 381

python图像匹配缺口_【kimol君的无聊小发明】—用python识别滑块中的缺口

【kimol君的无聊小发明】—用python识别滑块中的缺口前言一、缺口识别1.读取图片2.识别图片边缘3.缺口匹配二、完整代码写在最后前言某个夜深人静的夜晚,夜微凉风微扬,月光照进我的书房~当我打开文件夹以回顾往事之余,惊现许多看似杂乱的无聊代码。我拍腿正坐,一个想法油然而生:“生活已然很无聊,不如再无聊些叭”。于是,我决定开一个专题,便称之为kimol君的无聊小发明。妙…啊~~~验证码往往是爬...

weixin_32519033的博客 1830

Apollo MPC横纵向耦合控制学习笔记

Apollo MPC横纵向控制原理学习笔记

weixin_39199083的博客 1万+

修复后找不到ip 黑群晖_黑群晖引导U盘损坏了怎么办?

前言虽然一般来说引导U盘损坏的可能性很小,但是避免不了万一出现问题导致黑群晖没有办法引导进入系统也是一件相当麻烦的事情。这里我就用两块U盘做个小试验,看看如果黑群晖上的引导U盘损坏以后,另一块U盘需要怎样写引导文件才能让黑群晖正常引导进入系统。试验开始我这里黑群晖使用的是DSM6.1.7的系统,U盘一块使用的是闪迪的酷豆,另一块就是闪迪的酷铄。目前系统引导U盘使用的是酷豆,VID:0781 PID...

weixin_36239323的博客 8270

超大图像二值化

目录 超大图像的二值化方法 分块处理超大图像的二值化问题   (1) 全局阈值处理   (2) 局部阈值(效果更好) 空白区域过滤 先缩放进行二值化,然后还原大小 分块处理超大图像的二值化问题 import cv2 as cv import numpy as np def big_image_binary(image): print(image.shape) #图像大小 ch...

学而不思则罔,思而不学则殆 640

安卓APP通过CH340实现USB串口通信与设备检测

本文详细介绍了安卓APP通过CH340芯片实现USB串口通信与设备检测的完整流程。从CH340芯片的基础原理到开发环境搭建,再到串口通信的具体实现和错误处理,提供了全面的技术指导。文章还分享了USB热插拔处理、自动重连策略以及性能优化等实战技巧,帮助开发者高效完成安卓与嵌入式设备的通信开发。

weixin_42531925的博客 381

python+opencv 超大图像二值化方法

超大图像二值化一般用局部阈值法或者先分块再用全局阈值。 import cv2 as cv import numpy as np def big_image_binary(image): print(image.shape) cw = 256 ch = 256 h, w = image.shape[:2] # 图像大小获取 gray = cv.cvt...

Acmer_future_victor的博客 457

WS2812和homeassistant握手

本文学习了WS2812和homeassistant握手,后期会分享更多有趣物联网的操作从而实现对外部世界进行感知,充分认识这个有机与无机的环境,科学地合理地进行创作和发挥效益,然后为人类社会发展贡献一点微薄之力。...

vor234的博客 814

基于深度学习YOLOv10的人脸表情识别系统(附完整资源+PySide6界面+训练代码)

本文介绍了如何基于YOLOv10实现一个人脸表情识别系统。我们从数据集准备、模型训练到PySide6界面实现进行了详细的讲解。通过该系统,用户可以实时检测和分类人脸表情,为情感分析、智能交互等应用场景提供支持。

YOLO 1053

python + opencv图像处理(十六)——超大图像二值化

分块 全局阈值和局部阈值 from matplotlib import pyplot as plt from cv2 import cv2 as cv import numpy as np def big_image_binary(image): print(image.shape) #超大图像,屏幕无法显示完整 cw = 256 # 分块的大小 ch = 2...

小黄的博客 624

在虚拟机中对阿克曼转向车进行导航及避障的仿真测试

一、    在我使用rosdep install teb_local_planner去安装teb_local_planner的时候,报错:Command ‘rosdep’ not found, but can be installed with:sudo apt install python3-rosdep2    我花大半个月好不容易建立起的一系列ROS环境,被python3-rosdep2这条万恶的语句连同ROS一起给我删了。。。悲伤来的那么猝不及防    随着ROS版本的迭代,相关资料很多都不再适用

慕羽★的博客 3810

Python+OpenCV图像处理之超大图像二值化

(一)分块处理超大图像的二值化问题 python实现,包括全局阈值和局部阈值方法 import cv2 import numpy as np __author__ = "boboa" def big_image_demo(image): print(image.shape) # 分成小块,宽高 cw = 256 ch = 256...

weixin_30757793的博客 278

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

超大图像二值化(opencvAPI)

目录 超大图像二值化原理 1、图像分块(区域) 2、直接过滤某些噪声块+全局阈值二值化 3、分块后局部阈值二值化 超大图像二值化原理 1、图像分块(区域) 把一幅图像分成多个小正方形区域处理,降低大面积处理时块间相互影响造成误差 import cv2 as cv import numpy as np cw = 256 ch = 256 h, w = image.shape...

CHWB2580的博客 546

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

opencv学习十二:超大图像二值化

超大图像的二值化方法 分块处理超大图像的二值化问题   (1) 全局阈值处理   (2) 局部阈值(效果更好) 空白区域过滤 先缩放进行二值化,然后还原大小 分块处理超大图像的二值化问题 import cv2 as cv import numpy as np def big_image_binary(image): print(image.shape) #图像大小 ch, cw = 255, 255 #每个小块的大小 h, w = image.shape[:2] gra

weixin_44145452的博客 443

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

python opencv图像二值化大律算法_python+opencv 超大图像二值化方法

超大图像二值化一般用局部阈值法或者先分块再用全局阈值。import cv2 as cvimport numpy as npdef big_image_binary(image):print(image.shape)cw = 256ch = 256h, w = image.shape[:2] # 图像大小获取gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)f...

weixin_39642990的博客 179

python+opencv3.3视频教学笔记 17 超大图像二值化

对于分辨率比较大的图片,可以先将其分块后再对其进行二值化 import cv2 as cv import numpy as np def huge_image(image): h, w = image.shape[:2] cw = 128 ch = 128 gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY) for ...

酸菜鱼没有梦想的博客 358

python-opencv 图像处理基础 (七)图像二值化+超大图像二值化

【代码】python-opencv 图像处理基础 (七)图像二值化+超大图像二值化。

冰雪棋书的博客 881

python opencv图像二值化大律算法_python-opencv 超大图像二值化方法

*分块*全局阈值 VS 局部阈值代码:import cv2 as cvimport numpy as npdef big_image_binary(image):print(image.shape)cw = 213ch = 547h,w = image.shape[:2]gray = cv.cvtColor(image,cv.COLOR_BGR2GRAY)for row in range(0,h,...

weixin_39907526的博客 235

php opencv二值化,大图像二值(opencvAPI),超大,二值化

目录超大图像二值化原理1、图像分块(区域)把一幅图像分成多个小正方形区域处理,降低大面积处理时块间相互影响造成误差import cv2 as cvimport numpy as npcw = 256ch = 256h, w = image.shape[:2]#获取图像的高和宽gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)#彩色图像灰度化for row in...

weixin_29806483的博客 364
上一篇: [OpenCv](python)图像二值化
下一篇: 【pytorch安装】离线安装pytorch(以cpu版本安装为例)
YL_python_C++_java
博客等级 码龄7年 1392粉丝 142原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值