如何解决将Opencv与Django集成
我想将OpenCV集成到我的Django项目中。我不知道该怎么做。我已经阅读了一些教程,并按如下方式自定义了我的代码:
图像模型:
import os
import datetime
import uuid
from django.db import models
from django.contrib.auth import get_user_model
from config import abstract_model
from PIL import Image
import numpy as np
from django.core.files.base import ContentFile
from .utils import get_detected_image
from io import BytesIO
User = get_user_model()
class FileManager:
@staticmethod
def photo_path(instance,filename):
basefilename,file_extension = os.path.splitext(filename)
date = datetime.datetime.today()
uid = uuid.uuid4()
return f'Chekced_Images/{instance.user.email}/{uid}-{date}{file_extension}'
class RawImage(abstract_model.BaseAbstractModel):
user = models.ForeignKey(
User,on_delete=models.DO_NOTHING,related_name='checked_images'
)
image = models.ImageField(upload_to=FileManager.photo_path,null=True,blank=True)
is_detected = models.BooleanField(default=False,blank=True,)
def __str__(self):
return f'{self.user}\'s checked image on {self.posted_on}'
def save(self,*args,**kwargs):
# Open Image
pil_img = Image.open(self.image)
# convert image to array
cv_img = np.array(pil_img)
# check the image
img = get_detected_image(cv_img)
# convert the image from the array
detected_img = Image.fromarray(img)
# Save image
buffer = BytesIO()
detected_img.save(buffer,format='png')
image_png = buffer.getvalue()
self.image.save(str(self.image),ContentFile(image_png),save=False)
super().save(*args,**kwargs)
对象检测功能如下:
import cv2 as cv
import numpy as np
def get_detected_image(image):
main_image = cv.imread('./needle_image.jpg',cv.IMREAD_REDUCED_COLOR_2)
template = cv.imread('./template_image.jpg',cv.IMREAD_REDUCED_COLOR_2)
result = cv.matchTemplate(main_image,template,cv.TM_CCOEFF_NORMED)
# Get the best match position
min_val,max_val,min_loc,max_loc = cv.minMaxLoc(result)
threshold = 0.8
if max_val >= threshold:
print('Found needle.')
needle_w = template.shape[1]
needle_h = template.shape[0]
top_left = max_loc
bottom_right = (top_left[0] + needle_w,top_left[1] + needle_h)
cv.rectangle(main_image,top_left,bottom_right,color=(0,255,0),thickness=2,lineType=cv.LINE_8)
return cv.imwrite('result.jpg',main_image)
N.B: 我正在做我的最后一年的项目。因此,请帮助我如何在我的django项目中实现此功能。我关注了一些YouTube教程,并收集了很多代码。如果有实现此目的的简单方法,请提出一个建议。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。