Unable to send plot to http://127.0.0.1:63342

Viewed 8612

I am facing an error ie to send plot to a particular IP address using python, numpy and matplotlob. I am attaching snippet which I have tried till now.

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

Errors:

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'
5 Answers

I also had the "Error: failed to send plot to http://127.0.0.1:63342" error message when trying to display a matplotlib plot in PyCharm. I fixed it by disabling the "show plots in tool window" option under settings > tools > Python Scientific. In case the error message persists, try reproducing the error outside of PyCharm

enter image description here

Unchecked the "show plots in tools window" under the Settings >> Tools >> Python Scientific >>

Another thing that worked for me was adding localhost to no_proxy environment variable. Be sure to add the port as well

export no_proxy=$no_proxy,127.0.0.1:63342

For my case, it is because my VPN V2rayU enabled the global proxy mode. Once disable it, the error is gone.

I found that this issue arose when I had too many runs stacked up in the plot window on Pycharm. In other words, it was "full". After clearing the old plots, it was able to send plots to the window again. Didn't have to disable it. Restarting my computer also worked but this was likely because it cleared the window as well. :-) Hope this helps!

Related