我用opencv制作smartmirror . 我用raspbian但是,我有一个问题 .

导入必要的包

from picamera.array import PiRGBArray
from picamera import PiCamera
import time
import cv2
def detect(img, cascade):
rects = cascade.detectMultiScale(img, scaleFactor=1.3, minNeighbors=4, 
                      minSize=(30, 30), flags=cv2.CASCADE_SCALE_IMAGE)
if len(rects) == 0:
    return []

rects[:,2:] += rects[:,:2]
return rects

def draw_rects(img, rects, color):
for x1, y1, x2, y2 in rects:
    cv2.rectangle(img, (x1, y1), (x2, y2), color, 2)

初始化相机并获取原始相机捕获的参考

camera = PiCamera()
camera.resolution = (640, 480)
camera.framerate = 32
rawCapture = PiRGBArray(camera, size=(640, 480))
cascade = cv2.CascadeClassifier("opencv-3.3.0/data/haarcascades/haarcascade_frontalface_alt.xml")

让相机进行预热

time.sleep(0.1)
scan = 0

从相机捕获帧

for frame in camera.capture_continuous(rawCapture, format="bgr", use_video_port=True):

    # grab the raw NumPy array representing the image, then initialize the timestamp
    # and occupied/unoccupied text
    img = frame.array
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    gray = cv2.equalizeHist(gray)
    rects = detect(gray, cascade)
    if len(rects) != 0:
        scan = 1
    vis = img.copy()
    draw_rects(vis, rects, (0, 255, 0))
    # show the frame
    cv2.imshow("Frame", vis)
    key = cv2.waitKey(1) & 0xFF
    # clear the stream in preparation for the next frame
    rawCapture.truncate(0)



# if the `q` key was pressed, break from the loop

if scan == 1:
    break

所以,在虚拟环境中,我想将变量(扫描)带入我的文件(.py) . 但是,我得到一个错误,没有名为cv2的模块如何将变量(扫描)用于我的文件?请帮帮我 .

这是我的文件(.py)

#smartmirror.py
from __future__ import print_function
from aplclient.discovery import build
from httplib2 import Http
from oauth2client import file, clinet, tools
from Tkinter import *
import locale

(used coding)