这种报错如何处理呀?
原码如下
import numpy as np
import cv2 as cv
from CNN import chess_recon
chess_recon=chess_recon()
qipan = cv.imread('test.png',1)
def ocr_chess(qipan):
chess_list = ['帅', '仕', '相', '马', '炮', '车', '兵', '卒', '将', '象','士']
state_list_init = [['一一', '一一', '一一', '一一', '一一', '一一', '一一', '一一', '一一'],
['一一', '一一', '一一', '一一', '一一', '一一', '一一', '一一', '一一'],
['一一', '一一', '一一', '一一', '一一', '一一', '一一', '一一', '一一'],
['一一', '一一', '一一', '一一', '一一', '一一', '一一', '一一', '一一'],
['一一', '一一', '一一', '一一', '一一', '一一', '一一', '一一', '一一'],
['一一', '一一', '一一', '一一', '一一', '一一', '一一', '一一', '一一'],
['一一', '一一', '一一', '一一', '一一', '一一', '一一', '一一', '一一'],
['一一', '一一', '一一', '一一', '一一', '一一', '一一', '一一', '一一'],
['一一', '一一', '一一', '一一', '一一', '一一', '一一', '一一', '一一'],
['一一', '一一', '一一', '一一', '一一', '一一', '一一', '一一', '一一'], ]
gray = cv.cvtColor(qipan, cv.COLOR_RGB2GRAY)
circle1 = cv.HoughCircles(gray, cv.HOUGH_GRADIENT, 1, 20, param1=100, param2=24, minRadius=26, maxRadius=30)
circles = circle1[0, :, :] # 提取为二维
circles = np.uint16(np.around(circles)) # 四舍五入,取整
for i in circles[:]:
# cv.circle(qipan, (i[0], i[1]), i[2], (255, 0, 0), 5) # 画圆
# cv.circle(qipan, (i[0], i[1]), 1, (255, 0, 0), 10) # 画圆心
#棋盘横坐标
x=int((i[0])/69)
#棋盘纵坐标
y=int((i[1])/69)
#CNN识别棋子是什么
grab_img=qipan[i[1] - i[2]+3:i[1] + i[2]+3, i[0] - i[2]+2:i[0] +i[2]+2]
grab_gray_img=cv.cvtColor(grab_img, cv.COLOR_RGB2GRAY)
grab_gray_img = cv.cvtColor(grab_gray_img, cv.COLOR_GRAY2RGB)
result=chess_recon.recon_img(grab_img)
if x==3 and y==0:
cv.imwrite("che.png",grab_gray_img)
print(result)
#识别棋子颜色
img_hsv = cv.cvtColor(grab_img, cv.COLOR_BGR2HSV)
mask1 = cv.inRange(img_hsv, (0, 50, 20), (5, 255, 255))
mask2 = cv.inRange(img_hsv, (175, 50, 20), (180, 255, 255))
mask = cv.bitwise_or(mask1, mask2)
if cv.countNonZero(mask) > 0:
color="红"
else:
color="黑"
#组合成识别的期盼状态
state_list_init[y][x] = color+chess_list[result.item()]
return state_list_init
#for i in state_list_init:
# print(i)
#cv.imshow("chess_board",qipan)
#cv.waitKey(0)
#x=ocr_chess(qipan)
#for i in x:
# print(i)
报错如下
= RESTART: D:\Matlab\bin\Matlab数学建模工具\中国象棋棋子识别\ai_chess_board\ai_chess_board\ocr_chessboard.py
Traceback (most recent call last):
File "D:\Matlab\bin\Matlab数学建模工具\中国象棋棋子识别\ai_chess_board\ai_chess_board\ocr_chessboard.py", line 7, in <module>
chess_recon=chess_recon()
File "D:\Matlab\bin\Matlab数学建模工具\中国象棋棋子识别\ai_chess_board\ai_chess_board\CNN.py", line 114, in __init__
self.model.load_state_dict(torch.load("models/cnn.pkl"), False)
File "C:\Users\ZengFH\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\torch\serialization.py", line 712, in load
return _load(opened_zipfile, map_location, pickle_module, **pickle_load_args)
File "C:\Users\ZengFH\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\torch\serialization.py", line 1049, in _load
result = unpickler.load()
File "C:\Users\ZengFH\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\torch\serialization.py", line 1019, in persistent_load
load_tensor(dtype, nbytes, key, _maybe_decode_ascii(location))
File "C:\Users\ZengFH\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\torch\serialization.py", line 1001, in load_tensor
wrap_storage=restore_location(storage, location),
File "C:\Users\ZengFH\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\torch\serialization.py", line 175, in default_restore_location
result = fn(storage, location)
File "C:\Users\ZengFH\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\torch\serialization.py", line 152, in _cuda_deserialize
device = validate_cuda_device(location)
File "C:\Users\ZengFH\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\site-packages\torch\serialization.py", line 136, in validate_cuda_device
raise RuntimeError('Attempting to deserialize object on a CUDA '
RuntimeError: Attempting to deserialize object on a CUDA device but torch.cuda.is_available() is False. If you are running on a CPU-only machine, please use torch.load with map_location=torch.device('cpu') to map your storages to the CPU.