From f79393100bba42c7fc7e5aac2684ad68dd1fe221 Mon Sep 17 00:00:00 2001 From: duanmu <774052669@qq.com> Date: Sat, 18 Mar 2023 15:19:40 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E4=BA=86=E4=B8=80=E4=B8=AA=E7=AB=AF?= =?UTF-8?q?=E6=9C=A8=E8=AF=B4gohome=E7=9A=84=E8=BF=98=E4=B8=8D=E9=94=99?= =?UTF-8?q?=E7=9A=84=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- classifer.py | 20 ++++++++++---------- hist.py | 2 +- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/classifer.py b/classifer.py index 26f00ae..70bd9da 100755 --- a/classifer.py +++ b/classifer.py @@ -31,7 +31,7 @@ sys.path.append(os.getcwd()) from root_dir import ROOT_DIR import utils -FEATURE_INDEX = [0,1,2,4] +FEATURE_INDEX = [0,1,2,3,4,5] delete_columns = 10 # 已弃用 num_bins = 10 @@ -60,10 +60,10 @@ class WoodClass(object): self._single_pick = single_pick_mode self.set_purity(self.pur) self.change_pick_mode(single_pick_mode) - # self.model = LogisticRegression(C=1e5) + self.model = LogisticRegression(C=1e5) self.left_correct = left_correct # self.model = KNeighborsClassifier() - self.model = DecisionTreeClassifier() + # self.model = DecisionTreeClassifier() else: self.load(load_from) self.isCorrect = False @@ -113,7 +113,7 @@ class WoodClass(object): :return: """ # 训练数据文件位置 - result = self.get_train_data(data_path, plot_2d=False) + result = self.get_train_data(data_path, plot_2d=True) if result is False: return 0 x, y = result @@ -122,7 +122,7 @@ class WoodClass(object): model_name = self.save(file_name) return model_name - def fit(self, x, y, test_size=0.7): + def fit(self, x, y, test_size=0.3): x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=test_size, random_state=0) self.model.fit(x_train, y_train) y_pred = self.model.predict(x_test) @@ -304,14 +304,14 @@ class WoodClass(object): x = cv2.cvtColor(x, cv2.COLOR_BGR2LAB) x = np.concatenate((x, x_hsv), axis=2) x = np.reshape(x, (x.shape[0] * x.shape[1], x.shape[2])) - + x = x[x[:, 0] > 30] # x = x[np.argsort(x[:, 0])] # x = x[-self.k:, :] hist, bins = np.histogram(x[:, 0], bins=num_bins) - hist = hist[1:] - bins = bins[1:] + # hist = hist[1:] + # bins = bins[1:] sorted_indices = np.argsort(hist) hist_number = sorted_indices[-1] second_hist_number = sorted_indices[-2] @@ -440,8 +440,8 @@ class WoodClass(object): :param standard_color: 标准色彩, 默认为白色 :return: 校正后的图片 shape = (n_rows, n_cols - cut_col_num, n_channels) """ + img = img[:, 20:, :] # 图片黑边需要去除 if self.left_correct: - img = img[:, 20:, :] # 图片黑边需要去除 # 按照correct_col_num列数量取出最左侧校正板区域成像结果 correct_img = img[:, :correct_col_num, :] # 校正区域进行均值化 @@ -468,7 +468,7 @@ if __name__ == '__main__': settings.model_path = str(ROOT_DIR / 'models' / wood.fit_pictures(data_path=data_path)) # 测试单张图片的预测,predict_mode=True表示导入本地的model, False为现场训练的 - pic = cv2.imread(r"data/316/dark/rgb70.png") + pic = cv2.imread(r"data/318/dark/rgb89.png") start_time = time.time() # for i in range(100): wood_color = wood.predict(pic) diff --git a/hist.py b/hist.py index 1ae516b..7ad8ff5 100644 --- a/hist.py +++ b/hist.py @@ -13,7 +13,7 @@ ratio = np.sqrt(5000 / (w * h)) ww, hh = int(ratio * w), int(ratio * h) img = cv2.resize(img, (hh, ww)) x = img.reshape(img.shape[0]*img.shape[1], img.shape[2]) - +x = x[x[:,0]>20] hist, bins = np.histogram(x[:, 0], bins=10) hist = hist[1:] bins = bins[1:]