opencv图像处理_python(一)

一、RGB图转换为GARY图

import cv2

img = cv2.imread(r'path\\img.png')    #打开图片
gray_img = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)    #转成gary图片

二、遍历gary图片,做阈值处理

y = img.shape[1]
x = img.shape[0]

            # 遍历灰度图,阈值大于1的全变白
for i in range(x):
    for j in range(y):
        if gray_img[i, j] > 1:
            gray_img[i, j] = 255
        else:
            gray_img[i, j] = 0       

三、将图片在label组件中显示

如果直接使用

#错误写法
img2 = cv2.imread(r'path\\img.png')
self.label.setPixmap(img2)

此方法将会报错:

TypeError: setPixmap(self, QPixmap): argument 1 has unexpected type 'numpy.ndarray'

应该用如下写法:

global imgNamepath  # 这里为了方便别的地方引用图片路径,将其设置为全局变量

imgNamepath = ("path\\img.png")

# 通过文件路径获取图片文件,并设置图片长宽为label控件的长、宽
img = QtGui.QPixmap(imgNamepath).scaled(self.label_3_1.width(), self.label_3_1.height())

# 在label控件上显示选择的图片
self.label.setPixmap(img)

四、遍历二值图,获取指定颜色的pixel数量

black = 0
white = 0
# 遍历二值图,为0则black+1,否则white+1
for i in range(x):
    for j in range(y):
        if gray_img[i, j] == 0:
            black += 1
        else:
            white += 1
print("白色个数:", white)
print("黑色个数:", black)
rate1 = white / (x * y)
rate2 = black / (x * y)
# round()第二个值为保留几位有效小数。
str_1 = str(round(rate1 * 100, 2)) + '%'


print("白色面积所占整张图的百分比:",str_1)

print("白色占比:", round(rate1 * 100, 2), '%')
print("黑色占比:", round(rate2 * 100, 2), '%')

你可能感兴趣的:(python学习,opencv,python,图像处理)