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

系列文章目录

文章目录

  • 系列文章目录
  • 前言
  • 一、专词解释
  • 二、效果实现
    • 1.源码一
    • 2.源码二
  • 三、效果确认
  • 总结

前言

一、专词解释

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、测试图片
python黑白像素面积占比计算(脏污、白点等)_第1张图片
2、测试结果
python黑白像素面积占比计算(脏污、白点等)_第2张图片
python黑白像素面积占比计算(脏污、白点等)_第3张图片


总结

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

你可能感兴趣的:(源码,Python,图像处理,python,计算机视觉,人工智能)