优秀的编程知识分享平台

网站首页 > 技术文章 正文

「Python图像识别」10.5

nanyue 2024-11-24 19:42:35 技术文章 1 ℃

10.5 现有1元、5元、10元、20元、50元、100元共6种面额的纸币彩色图像,请计算R、G、B三个颜色通道的一阶、二阶、三阶颜色矩,共9个特征指标数据,记为自变量X,同时构造纸币面额标签数据集,记为Y。
[知识点及要求]图像颜色特征提取

示例代码如下:

# -*- coding: utf-8 -*-
from PIL import Image
import numpy as np
import os
path='图片'
d=os.listdir(path) #读取 图片文件夹下所有图像文件名
X=np.zeros((len(d),9)) #预定义自变量,即9个颜色矩阵特征指标
Y=np.zeros(len(d)) #预定义因变量,即人民币面额值
for i in range(len(d)):
    img=Image.open(path+'\\'+d[i]) #读取第i张图片
    img=img.resize((60,60)) #更改大小,统一为60*60
    im=img.split() #分离RGBA颜色通道
    R=np.array(im[0]) #R通道
    G=np.array(im[1]) #G通道
    B=np.array(im[2]) #B通道
    
    #R、G、B一阶颜色矩
    r1=np.mean(R)
    g1=np.mean(G)
    b1=np.mean(B)
    
     #R、G、B二阶颜色矩
    r2=np.std(R)
    g2=np.std(G)
    b2=np.std(B)
    
    #R、G、B三阶颜色矩
    a=np.mean(abs(R-R.mean())**3)
    b=np.mean(abs(G-G.mean())**3)
    c=np.mean(abs(B-B.mean())**3)
    
    r3=a**(1./3)
    g3=b**(1./3)
    b3=c**(1./3)
    
    #赋给预定义的自变量X
    X[i,0]=r1
    X[i,1]=g1
    X[i,2]=b1
    X[i,3]=r2
    X[i,4]=g2
    X[i,5]=b2
    X[i,6]=r3
    X[i,7]=g3
    X[i,8]=b3
    
    #从图片的文件名中,获取人民币面额值,构造因变量Y
    png_name=d[i]
    Y[i]=png_name.split("_")[0]
    
    #按80%构建训练数据集,20%测试数据集
from sklearn.model_selection import train_test_split
x_train,x_test,y_train,y_test=train_test_split(X,Y,test_size=0.2,random_state=4)
from sklearn.svm import SVC
clf=SVC(class_weight='balanced')#类标签平衡策略
clf.fit(x_train,y_train)
y1=clf.predict(x_test)
r=y1-y_test
v=len(r[r==0])/len(y1)#预测值与真实值相减为0,即预测准确,统计其准确率
print('准确率为:',v)
#保存模型
import joblib
joblib.dump(clf,'clf.pkl')

部分运行结果如下图:

更多内容请见网易云课堂Python大数据学习吧:

https://study.163.com/provider/480000002230206/index.htm?share=2&shareId=480000002230206

最近发表
标签列表