python黑白像素面积占比计算(脏污、白点等)

57 篇文章 4 订阅
11 篇文章 1 订阅

系列文章目录

前言

一、专词解释

1、二值化:图像二值化就是将图像上的像素点的灰度值设置为0或255,即整个图像呈现出黑白效果;

2、cv2:CV2指的是OpenCV2,OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows、Android和Mac OS操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。

3、Numpy:这个库是 Python 数据分析的基础,numpy没有使用python本身的数组机制,而是提供了ndarray对象,该对象不仅能方便地存取数组,而且拥有丰富的数组计算函数。

二、效果实现

1.源码一

代码如下(无图形界面示例):

import cv2
import  numpy as np

img=cv2.imread('dian3.png',cv2.IMREAD_GRAYSCALE) #灰度图像
x,y= img.shape
print(img.shape)

#遍历灰度图,阈值大于150的全变白
for i in range(x):
    for j in range(y):
        if img[i,j]>150:
            img[i,j]=255
        else:
            img[i,j]=0
black = 0
white = 0
#遍历二值图,为0则black+1,否则white+1
for i in range(x):
    for j in range(y):
        if img[i,j]==0:
            black+=1
        else:
            white+=1
print("白色个数:",white)
print("黑色个数:",black)
rate1 = white/(x*y)
rate2 = black/(x*y)
#round()第二个值为保留几位有效小数。
print("白色占比:", round(rate1*100,2),'%')
print("黑色占比:", round(rate2*100,2),'%')

2.源码二

代码如下(加入选择框示例@author: DeepCold):

import tkinter
from tkinter import filedialog
import tkinter.font as tf
from PIL import Image


def upload_file():
    # askopenfilename 上传1;askopenfilenames上传多个
    result_text.delete(1.0, 'end')
    black_pixel = 0
    white_pixel = 0
    select_file = tkinter.filedialog.askopenfilename()
    image = Image.open(select_file)

    width, height = image.size
    for i in range(0, width):
        for j in range(0, height):
            # 获取像素
            current_pixel = image.getpixel((i, j))
            # 白色
            if current_pixel > (150, 150, 150):
                white_pixel += 1
            # 黑色
            elif current_pixel < (50, 50, 50):
                black_pixel += 1
    black_pixel_percent = black_pixel / (width * height)
    white_pixel_percent = white_pixel / (width * height)

    result_text.insert("insert", f'黑色像素:{black_pixel},占比:{black_pixel_percent:.{2}%}'
                                 f'\n白色像素:{white_pixel},占比:{white_pixel_percent:.{2}%}')


root = tkinter.Tk()
root.title('黑白像素统计Case')
root.minsize(240, 160)
my_font = tf.Font(family='微软雅黑', size=15)  # 设置字体

main_frame = tkinter.Frame(root).grid()

# 选择文件按钮
choice_file_btn = tkinter.Button(main_frame, text='请选择文件', command=upload_file)
# 计算结果显示框
result_text = tkinter.Text(main_frame, width=30, height=5, font=my_font)

choice_file_btn.grid(row=0, column=0)
result_text.grid(row=0, column=1)

root.mainloop()

三、效果确认

1、测试图片
在这里插入图片描述
2、测试结果
在这里插入图片描述
在这里插入图片描述


总结

分享:
从量子力学的角度来看意识,发现了一切被认知的物质状态,都是以意识的介入为基础,也就是从量子力学的诡异现象看出,一切万事万物都是由意识呈现出来的。这么新奇的理论居然是说明佛法所说的“心地法门”就是最准确的科学!有理论、有方法、有标准、可实践,这是佛法科学性的四大特质。

  • 9
    点赞
  • 95
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

若竹之心

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值