我遇到一个错误,即使用 python、numpy 和 matplotlob 将绘图发送到特定 IP 地址。我附上了我到目前为止已经尝试过的片段。
Python
import numpy as np
import cv2
from matplotlib import pyplot as plt
img = cv2.imread('ml.png', 1)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
img2 = cv2.imshow('img', img)
cv2.waitKey(0)
corners = cv2.goodFeaturesToTrack(gray, 30, 0.01, 10)
corners = np.int0(corners)
for i in corners:
x, y = i.ravel()
cv2.circle(img, (x, y), 10, 50, 0)
plt.imshow(img), plt.show()
MIN_MATCHES = 15
cap = cv2.imread('mario.png', 0)
model = cv2.imread('mario 3d.jpg', 0)
# create brute force matcher object
bf = cv2.BFMatcher(cv2.NORM_HAMMING, crossCheck=True)
# Compute model keypoints and its descriptors
kp_model = cv2.goodFeaturesToTrack(model, 20, 0.01, 15)
des_model = cv2.goodFeaturesToTrack(model, 20, 0.01, 15)
# Compute scene keypoints and its descriptors
kp_frame = cv2.goodFeaturesToTrack(cap, 20, 0.01, 15)
des_frame = cv2.goodFeaturesToTrack(cap, 20, 0.01, 15)
# Match frame descriptors with model descriptors
matches = bf.match(des_model, des_frame)
# Sort them in the order of their distance
matches = sorted(matches, key=lambda x: x.distance)
if len(matches) > MIN_MATCHES:
# draw first 15 matches.
cap = cv2.drawMatches(model, kp_model, cap, kp_frame,
matches[:MIN_MATCHES], 0, flags=2)
# show result
cv2.imshow('frame', cap)
cv2.waitKey(0)
else:
print
错误:
Error: failed to send plot to http://127.0.0.1:63342
urlopen(url, buffer)
return opener.open(url, data, timeout)
response = self._open(req, data)
result = self._call_chain(self.handle_open, protocol, protocol +
result = func(*args)
return self.do_open(http.client.HTTPConnection, req)
r = h.getresponse()
response.begin()
version, status, reason = self._read_status()
line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")
return self._sock.recv_into(b)
ConnectionResetError: [WinError 10054] An existing connection was forcibly closed by the remote host
Traceback (most recent call last):
matches = bf.match(des_model, des_frame)
cv2.error: OpenCV(4.3.0) C:\projects\opencv-python\opencv\modules\core\src\batch_distance.cpp:275: error: (-215:Assertion failed) type == src2.type() && src1.cols == src2.cols && (type == CV_32F || type == CV_8U) in function 'cv::batchDistance'
尝试在 PyCharm 中显示 matplotlib 绘图时,我还收到“错误:无法将绘图发送到 http://127.0.0.1:63342”错误消息。我通过禁用“设置”>“工具”>“Python Scientific”下的“在工具窗口中显示绘图”选项来修复此问题。如果错误消息仍然存在,请尝试在 PyCharm 之外重现错误
我发现当我在 Pycharm 的绘图窗口中堆积了太多运行时,就会出现这个问题。换句话说,就是“满”了。清除旧的绘图后,它可以再次将绘图发送到窗口。不必禁用它。重新启动我的计算机也有效,但这可能是因为它也清除了窗口。 :-) 希望这有帮助!
取消选中“在工具窗口中显示绘图” 设置>>工具>>Python科学>>
对我有用的另一件事是将 localhost 添加到 no_proxy 环境变量中。请务必添加端口
export no_proxy=$no_proxy,127.0.0.1:63342
以上所有解决方案都不适合我。简单的 PyCharm restart 即可解决该问题。
非常愚蠢,但可能会被忽视。只是发帖以防有帮助。
就我而言,这是因为我的VPN V2rayU启用了全局代理模式。一旦禁用它,错误就消失了。
帮助 -> FindAction -> “注册表” ->
。ide.rest.api.request.per.minute
但是请小心,因为如果您将其设置超过~100,可能会导致 一些 UI 变慢甚至冻结。