2016-03-15 4 views
0

Я новичок в Django, и я хочу преобразовать свое изображение в оттенки серого, прежде чем загружать его с помощью opencv. Это то, что я пытался сделать, но это не работаетКак использовать opencv в Django?

`

from __future__ import unicode_literals 
from django.db import models 
import cv2 

class Personne(models.Model): 
    nom = models.CharField(max_length=50, unique=True, help_text="Le nom est unique") 
    description = models.TextField(blank=True) 

    def __unicode__(self): 
     return self.nom[:50] 

def traitement(filename): 
    img = cv2.imread(filename, 0) 
    cv2.imwrite(filename, img) 


class Visage(models.Model): 

    personne = models.ForeignKey(Personne) 

    def generate_filename(self, filename): 
     return "Images/%s/%s" % (self.personne.nom, filename) 

    traitement 
    image = models.ImageField(blank=False, upload_to=generate_filename) 
    ajoute_le = models.DateTimeField(auto_now_add=True) 

    def __unicode__(self): 
     return self.image.path` 
+0

Что именно не работает? Любые сообщения об ошибках или что? –

+0

Я вижу ошибку - плохой отступ во второй строке класса Personne. Возможно, это проблема (или исправить код yor в вопросе). Также строка «traitement» внутри класса Visage ничего не делает - какова его цель? –

+0

ошибок нет, но когда я загружаю свое изображение, он не конвертируется в оттенки серого – Lilia

ответ

1

Вы должны переопределить Save() метод модели Visage делать какие-либо действия с данными после того, как экономии. your_project_name Соответственно.

from your_project_name.settings import MEDIA_ROOT 

class Visage(models.Model): 
    ... 

    def save(self): 
     super(Visage, self).save() 
     filename = os.path.abspath(os.path.join(MEDIA_ROOT, self.image.name) 
     traitement(filename) 
+0

Я не нашел здесь MEDIA_ROOT. Извините, что я новичок, что там положить? Я пробовал: MEDIA_ROOT = 'home/user/my_project_name/Images' Я не нашел изображения – Lilia

+1

@Lilia ссылается на документацию django https://docs.djangoproject.com/en/1.9/ref/settings/ # media-root для использования загруженных пользователем файлов – RA123

+1

Это сработало! Спасибо Мне пришлось положить в MEDIA_ROOT = '' – Lilia

Смежные вопросы