2016-03-15 32 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第二條線壞縮進。也許這是一個問題(或修復問題中的代碼)。此外,Visage內部的「traitement」行不做 - 它的目的是什麼? –

+0

沒有錯誤,但是當我上傳我的圖像時,它不會轉換爲灰度 – Lilia

回答

1

您必須覆蓋保存()模型面貌方法後做數據的一些行動保存。 變化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