0

i want to pass the url of the image that was selected by the user in my python function views.py because my python function will process the image that was selected by the user. this is my html command

<!DOCTYPE html>
<html>
<head>
<link class="jsbin" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1/themes/base/jquery-ui.css" rel="stylesheet" type="text/css" />
<script class="jsbin" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<script class="jsbin" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.0/jquery-ui.min.js"></script>
<meta charset=utf-8 />
<title>JS Bin</title>
<!--[if IE]>
  <script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<style>
  article, aside, figure, footer, header, hgroup, 
  menu, nav, section { display: block; }
</style>
</head>
<body>
  <input type='file' onchange="readURL(this);" />
    <img id="blah" src="#" alt="your image" />
<script>
    function readURL(input) {
        if (input.files && input.files[0]) {
            var reader = new FileReader();

            reader.onload = function (e) {
                $('#blah')
                    .attr('src', e.target.result)
                    .width(150)
                    .height(200);
            };

            reader.readAsDataURL(input.files[0]);
        }
    }
</script>
</body>
</html>

and here is the function on my python

def predict():
    img = cv2.imread('C:/Users/HABITUS/Desktop/arvin files/download.jpg') #the url of the image selected must be here!!
    img = cv2.resize(img, (600, 600))
    enhancer = Image.fromarray(img)
    enhancer = ImageEnhance.Contrast(enhancer)
    enhanced = enhancer.enhance(1.5)
    enhancer1 = ImageEnhance.Brightness(enhanced).enhance(1.3)
    convert = scipy.misc.fromimage(enhancer1)
    imgM = cv2.medianBlur(convert, 5)
    # blurring and smoothening
    kernel = np.ones((5, 5), np.uint8)
    erosion = cv2.erode(imgM, kernel, iterations=1)
    dilation = cv2.dilate(erosion, kernel, iterations=1)
    blur = cv2.GaussianBlur(convert, (15, 15), 10)
    grayscaled = cv2.cvtColor(imgM, cv2.COLOR_BGR2GRAY)

    retval2, threshold2 = cv2.threshold(grayscaled, 200, 1, cv2.THRESH_BINARY_INV)

    gaus = cv2.adaptiveThreshold(grayscaled, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, 115, 1)
    retval2, otsu = cv2.threshold(grayscaled, 140, 250, cv2.THRESH_BINARY + cv2.THRESH_OTSU)
    backtorgb = cv2.cvtColor(threshold2, cv2.COLOR_GRAY2RGB)
    mult = cv2.multiply(img, backtorgb)
    edges = cv2.Canny(threshold2, 120, 50)

the image that was selected by the user must be in cv2.imread() how can i do that? any advice or help will be appreciated thanks

helyeahhh
  • 1
  • 2
  • I am not read up on Django 2.0 yet. But this is a really good question in django. My thought is that the use case you are describing is split into Front End and Back End. I'm sure this will get some disagreement, but Django doesn't make explicitly clear the framework for Django to talk with JS. So if quick and dirty just use django forms. But if for more of a production use case then I'd use a js framework to listen to which img was onClicked and then have that post to a django rest framework endpoint. – sahutchi Dec 27 '17 at 18:07

1 Answers1

0

this is somewhat confusing.

you might want to start with reading https://docs.djangoproject.com/en/2.0/topics/forms/

And here are two existing questions that should help you:

felix the cat
  • 165
  • 2
  • 9