< 0.000001:break# 计算梯度下降方法两类投影中心Gpro0 = np.matmul(Wgrad, u0.T)Gpro1 = np.matmul(Wgrad, u1.T)# 测试集检验zql1 = test(wf, pro0, pro1)zql2 = test(Wgrad, Gpro0, Gpro1)print("Fisher(LDA)分类正确率为:")print(zql1)print("梯度下降法分类正确率为:")print(zql2)
(二)朴素贝叶斯
import osimport cv2import numpy as np# 本次算法采用朴素贝叶斯分类 , 各分类特征假定符合相互独立条件# 采用最大后验概率判别def preProcess(OriResize):# 转HSV颜色空间利用饱和度去除白色背景HSV = cv2.cvtColor(OriResize, cv2.COLOR_BGR2HSV)# 通过实验发现所使用背景可利用s_min=40的饱和度去除lower = np.array([0, 40, 0])upper = np.array([179, 255, 255])mask = cv2.inRange(HSV, lower, upper)# 进行高斯模糊blur = cv2.GaussianBlur(mask, (7, 7), 1)return blur# 计算返回查找表(行从上到下:苹果、香蕉、柠檬、猕猴桃)def searchT(apl, bal, lel, kil):st = []ap = np.array(apl)ba = np.array(bal)le = np.array(lel)ki = np.array(kil)ap1 = ap.sum(axis=0)ba1 = ba.sum(axis=0)le1 = le.sum(axis=0)ki1 = ki.sum(axis=0)ap2 = list(ap1 / ap1[15])ba2 = list(ba1 / ba1[15])le2 = list(le1 / le1[15])ki2 = list(ki1 / ki1[15])st.append(ap2[0:15])st.append(ba2[0:15])st.append(le2[0:15])st.append(ki2[0:15])return st# p(yi)列表def pyL():global appleCglobal bananaCglobal lemonCglobal kiwifruitCtotal = appleC + bananaC + lemonC + kiwifruitCp = []p.append(appleC/total)p.append(bananaC/total)p.append(lemonC/total)p.append(kiwifruitC/total)return p# 获取样本数据(B、G、R目标均值)SampleFiles = os.listdir(r"D:\ThirdGhomework\classification\BayesSamples")# 图像目标预处理# 储存DN区间个数表(0 , 51],[52 , 103],[104 , 155],[156 , 207],[208 , 254]appleDN = []bananaDN = []lemonDN = []kiwifruitDN = []# 各水果类别计数(计算P(yi))appleC = 0bananaC = 0lemonC = 0kiwifruitC = 0for imgname in SampleFiles:count = []# 单样本DN区间计数a(0 , 51],b[52 , 103],c[104 , 155],d[156 , 207],e[208 , 254]ra, rb, rc, rd, re = 0, 0, 0, 0, 0ba, bb, bc, bd, be = 0, 0, 0, 0, 0ga, gb, gc, gd, ge = 0, 0, 0, 0, 0# 记录提取目标总像素个数tcount = 0imgpath = os.path.join(r"D:\ThirdGhomework\classification\BayesSamples", imgname)Img = cv2.imread(imgpath)# 调整图片长宽像素比调整显示大小shape = Img.shapeOriResize = cv2.resize(Img, (shape[0] // 2, shape[1] // 2))binary = preProcess(OriResize)MultOJ = cv2.bitwise_and(OriResize, OriResize, mask=binary)B, G, R = cv2.split(MultOJ)shape = OriResize.shapeheight = shape[0]width = shape[1]# 正式开始获取颜色特征# Rfor i in range(height):for j in range(width):if not R[i][j] == 0:tcount += 1if 0 < R[i][j] <= 51:ra += 1elif 51 < R[i][j] <= 103:rb += 1elif 103 < R[i][j] <= 155:rc += 1elif 155 < R[i][j] <= 207:rd += 1else:re += 1# Gfor i in range(height):for j in range(width):if 0 < G[i][j] <= 51:ga += 1elif 51 < G[i][j] <= 103:gb += 1elif 103 < G[i][j] <= 155:gc += 1elif 155 < G[i][j] <= 207:gd += 1else:ge += 1# Bfor i in range(height):for j in range(width):if 0 < B[i][j] <= 51:ba += 1elif 51 < B[i][j] <= 103:bb += 1elif 103 < B[i][j] <= 155:bc += 1elif 155 < B[i][j] <= 207:bd += 1else:be += 1count.append(ra)count.append(rb)count.append(rc)count.append(rd)count.append(re)count.append(ga)count.append(gb)count.append(gc)count.append(gd)count.append(ge)count.append(ba)count.append(bb)count.append(bc)count.append(bd)count.append(be)count.append(tcount)if imgname.startswith("apple"):appleC += 1appleDN.append(count)elif imgname.startswith("banana"):bananaDN.append(count)bananaC += 1elif imgname.startswith("lemon"):lemonDN.append(count)lemonC += 1else:kiwifruitDN.append(count)kiwifruitC += 1ST = searchT(appleDN, bananaDN, lemonDN, kiwifruitDN)py = pyL()# 样本测试testpath = input("请输入测试图片的绝对路径(使用\\):")Imgtest = cv2.imread(testpath)# 调整图片长宽像素比调整显示大小OriResizet = cv2.resize(Imgtest, (600, 900))binaryt = preProcess(OriResizet)MultOJt = cv2.bitwise_and(OriResizet, OriResizet, mask=binaryt)Bt, Gt, Rt = cv2.split(MultOJt)shapett = OriResizet.shapeheightt = shapett[0]widtht = shapett[1]testcount = 0RDN, GDN, BDN = 0, 0, 0for i in range(heightt):for j in range(widtht):if not Rt[i][j] == 0:testcount += 1RDN += Rt[i][j]for i in range(heightt):for j in range(widtht):if not Gt[i][j] == 0:GDN += Gt[i][j]for i in range(heightt):for j in range(widtht):if not Bt[i][j] == 0:BDN += Bt[i][j]RDN /= testcountBDN /= testcountGDN /= testcount# 取概率标志位rj = 0bj = 0gj = 0# r标识if 0
- 毕达哥拉斯是谁?古希腊数学家、哲学家毕达哥拉斯简介
- 007的座驾乔布斯的爱车宝马的旗舰超跑传世经典宝马Z8 宝马z8二手车
- 80后大叔入手雷克萨斯ES200,舒适性满意,动力足够用,油耗7.8L 雷克萨斯es200真实油耗
- 新车|2.5升车型或24.8万元起售,新款斯巴鲁森林人将于9月上市 斯巴鲁新车
- 道奇品牌:“道奇不卖电动汽车,只卖美国肌肉车” 克莱斯勒是什么品牌的车
- 新雷克萨斯RX450来了,售价曝光,气场不输GLE,2.4T动力+8AT 雷克萨斯450售价多少
- 一万多买了台经典款福克斯,操控动力都有了,师傅验完车说捡到了 经典福克斯是指哪一款
- 2023年1月斯巴鲁美国销量超4万,Cossek最好卖,森林人跌幅大 斯巴鲁森林人销量排名
- Jeep背后的广汽菲克怎么就破产了? 克莱斯勒中国公司官网
- 美国著名网站评测二十款新车宝马iX入围最佳电动汽车特斯拉未入围 电动汽车网站