添加了socket通信功能
0
.gitignore
vendored
Normal file → Executable file
0
classifer.py
Normal file → Executable file
0
pics/TODO.png
Normal file → Executable file
|
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 30 KiB |
0
pics/result.png
Normal file → Executable file
|
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 34 KiB |
0
pics/从木板中提取色彩.png
Normal file → Executable file
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
0
pics/色彩分类.png
Normal file → Executable file
|
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 26 KiB |
0
root_dir.py
Normal file → Executable file
71
socket_detector.py
Normal file
@ -0,0 +1,71 @@
|
|||||||
|
import socket
|
||||||
|
import numpy as np
|
||||||
|
import cv2
|
||||||
|
from classifer import WoodClass
|
||||||
|
import time
|
||||||
|
|
||||||
|
|
||||||
|
def main():
|
||||||
|
model_path = "models/model_2022-09-06_13-08.p"
|
||||||
|
socket_receive = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||||
|
socket_receive.connect(('127.0.0.1', 21122))
|
||||||
|
socket_send = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
|
||||||
|
socket_send.connect(('127.0.0.1', 21123))
|
||||||
|
# _ = socket_receive.recv(4096*1000*10)
|
||||||
|
detector = WoodClass(w=4096, h=1200, n=3000, debug_mode=False)
|
||||||
|
detector.load(path=model_path)
|
||||||
|
while True:
|
||||||
|
# receive data
|
||||||
|
t1 = time.time()
|
||||||
|
size_buff = socket_receive.recv(4)
|
||||||
|
n_rows, n_cols = size_buff[0] << 8 | size_buff[1], size_buff[2] << 8 | size_buff[3]
|
||||||
|
data_size = n_rows * n_cols * 3
|
||||||
|
print(data_size)
|
||||||
|
recv_size = data_size
|
||||||
|
buff_all, size = [], 0
|
||||||
|
while True:
|
||||||
|
data_buff = socket_receive.recv(recv_size)
|
||||||
|
recv_size -= len(data_buff)
|
||||||
|
buff_all += data_buff
|
||||||
|
if recv_size == 0:
|
||||||
|
break
|
||||||
|
print(len(buff_all))
|
||||||
|
raw_data = np.frombuffer(bytes(buff_all), dtype=np.uint8).reshape(int(n_rows), int(n_cols), -1)
|
||||||
|
print(raw_data.shape)
|
||||||
|
wood_color = detector.predict(raw_data)
|
||||||
|
# cv2.imshow("img", raw_data)
|
||||||
|
# cv2.waitKey(30)
|
||||||
|
# print('Class is ', wood_color)
|
||||||
|
if wood_color == 0:
|
||||||
|
socket_send.send(b'S')
|
||||||
|
print('S send success')
|
||||||
|
elif wood_color == 1:
|
||||||
|
socket_send.send(b'Z')
|
||||||
|
print('Z send success')
|
||||||
|
elif wood_color == 2:
|
||||||
|
socket_send.send(b'Q')
|
||||||
|
print('Q send success')
|
||||||
|
print((time.time()-t1))
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
# 2个端口
|
||||||
|
# 接受端口21122
|
||||||
|
# 发送端口21123
|
||||||
|
# 接收到图片 n_rows * n_bands * n_cols, float32
|
||||||
|
# 发送图片 n_rows * n_cols, uint8
|
||||||
|
main()
|
||||||
|
# test(r"D:\build-tobacco-Desktop_Qt_5_9_0_MSVC2015_64bit-Release\calibrated15.raw")
|
||||||
|
# main()
|
||||||
|
# debug_main()
|
||||||
|
# test_run(all_data_dir=r'D:\数据')
|
||||||
|
# with open(r'D:\数据\虫子\valid2.raw', 'rb') as f:
|
||||||
|
# data = np.frombuffer(f.read(), dtype=np.float32).reshape(600, 29, 1024).transpose(0, 2, 1)
|
||||||
|
# plt.matshow(data[:, :, 10])
|
||||||
|
# plt.show()
|
||||||
|
# detector = SpecDetector('model_spec/model_29.p')
|
||||||
|
# result = detector.predict(data)
|
||||||
|
#
|
||||||
|
# plt.matshow(result)
|
||||||
|
# plt.show()
|
||||||
|
# result = result.reshape((600, 1024))
|
||||||