![]() Let’s start with SimpleHTTPRequestHandler which has some implemented features. The do_GET() and do_HEAD() functions are modified to run CGI scripts and serve the output, instead of serving files, if the request leads to somewhere below the cgi_directories path. Only directory-based CGI are used - the other common server configuration is to treat special extensions as denoting CGI scripts. The class will however, run the CGI script, instead of serving it as a file, if it guesses it to be a CGI script. Note that mapping HTTP hierarchic structure to local directory structure is exactly as in SimpleHTTPRequestHandler. This class is used to serve either files or output of CGI scripts from the current directory and below. This class implements the do_GET() and do_HEAD() functions. A lot of the work, such as parsing the request, is done by the base class BaseHTTPRequestHandler. SimpleHTTPRequestHandler This class serves files from the current directory and below, directly mapping the directory structure to HTTP requests. Subclasses should not need to override or extend the _init_() method. All the relevant information is stored in instance variables of the handler. For example, for the request method SPAM, the do_SPAM() method will be called with no arguments. The method name is constructed from the request. The handler will parse the request and the headers, then call a method specific to the request type. It must be sub-classed to handle each request method (e.g. By itself, it cannot respond to any actual HTTP requests BaseHTTPRequestHandler just provides a number of class and instance variables, and methods for use by subclasses. This class is used to handle the HTTP requests that arrive at the server. Now, look at some pre-defined Request Handler classes: class http. ![]() # i.e.From rver import HTTPServer, BaseHTTPRequestHandler def run ( server_class = HTTPServer, handler_class = BaseHTTPRequestHandler ): server_address = ( '', 8000 ) httpd = server_class ( server_address, handler_class ) httpd. # Convert the 8-bit pixel value to 16-bit by holding the rations Img = Image.open(byte_stream).convert('L') # Open the image and convert it to 8-bit greyscale (mono8) # This puts the decoded image into a buffer so that I don't need to saveīyte_stream = io.BytesIO(b64decoded_frame) # str_frame as utf-8 first otherwise python3.2 complains about unicode # Converts the base64 string into a byte string, we need to encode The solution looks like the following: import base64 The solution that I've chosen is to convert the image into an 8-bit greyscale image then convert the desired pixel into its 16-bit counterpart. I don't know for sure if that is what I want to do but if anyone could explain how to either convert an image to mono16 or a pixel to mono16 I could explore that and see if it is in fact the solution. I forgot to mention that I'm using python3.2Īnd after some more research I think that what I'm trying to do it get the mono16 value of a given pixel. To summarize, how do I convert a base64 image into a serialized binary stream where each pixel is represented by 16 bits. I have checked and the image is intact as I am able to save it as a png. However, there are far fewer indexes in the b64decoded_frame then there are pixels in the image and the integer values aren't nearly as high as expected. Pixel_index = (dimensions * pos) + pos + 1ī64decoded_frame = base64.b64decode(str_frame.encode('utf-8')) Str_frame = json.loads(request.GET)ĭimensions = json.loads(request.GET) At the moment I do the following: pos = json.loads(request.GET) In python I am trying to manipulate this base64 encoded image in such a way as to get 16 bits per pixel. Right now I use an html5 canvas to capture the frame and I use canvas.toDataURL() in order to convert the frame into a base64 encoded image, I then pass the base64 image, the coordinates, and the dimensions of the frame to python via AJAX. When the user clicks on the video I want to be able to take the current frame and the coordinates of their click and perform the same calculation as I do above in the C++ portion. Now the second half is a Django web app where I am also presented this video output, this time via an ffmpeg, nginx, hls stream. there exists a 16 bit chunk of data for each pixel. When this stream is first received, before I convert the buffer to an image, I am able to read the stream 16 bits at a time in order to perform some calculations for each pixel, i.e. There are two sides to my app, on one side I'm using C++ in order to read the frames from a camera using Pleora's EBUS SDK.
0 Comments
Leave a Reply. |