Python 非类型错误。显示转换

Python 非类型错误。显示转换,python,threshold,Python,Threshold,我想做一些程序,从网络摄像头捕获图像,然后裁剪它。在裁剪之后,我做了一些图像处理,从这个过程中它将运行我的机器人。以下是完整的程序: import cv2 from cv2 import * import numpy as np import pylab import pymorph import mahotas from matplotlib import pyplot from PIL import Image # initialize the camera cam = VideoCap

我想做一些程序,从网络摄像头捕获图像,然后裁剪它。在裁剪之后,我做了一些图像处理,从这个过程中它将运行我的机器人。以下是完整的程序:

import cv2
from cv2 import *
import numpy as np
import pylab
import pymorph
import mahotas
from matplotlib import pyplot
from PIL import Image 

# initialize the camera
cam = VideoCapture(0)   # 0 -> index of camera
s, img = cam.read()

# frame captured without any errors
if s:    
    imwrite("img.jpg",img) #save image

#Crop Image
imageFile = "img.jpg"
im1 = Image.open(imageFile)

def imgCrop(im):

        box = (0, 199, 640, 200)
        region = im.crop(box)
        region.save('crop.jpg')

cImg = imgCrop(im1)

#thresholding
def greyImg(im):
    gray = im.convert('L')
    bw = gray.point(lambda x: 0 if x<128 else 255, '1')
    bw.save("bw.jpg")

tImg = greyImg(cImg )

#direction

def find_centroid(im, rez):
        width, height = im.size
        XX, YY, count = 0, 0, 0
        for x in xrange(0, width, rez):
            for y in xrange(0, height, rez):
                    if im.getpixel((x, y)) == 255:
                        XX += x
                        YY += y
                        count += 1
        return XX/count, YY/count

print find_centroid(tImg, 1)

def robo_direct():
    cen = find_centroid(im, 1)
    diff = cen[0] - 320
    if diff > 10:
        print 'right'
    if diff < -10:
        print 'left'
    else:
        print 'straight'

print robo_direct()

这是因为
im
None
对象

请使用以下命令重试代码:

print im is None

你会看到的。我不知道threshold是什么,但很明显您创建的
im
对象是错误的。

您的函数
imgCrop(im1)
没有返回语句,因此返回
None
。然后您的
greyImg(im)
函数也没有返回语句,也将返回
None

要修复此问题,请将返回语句添加到第一个
返回区域
和第二个
返回bw
的函数中


另外,您的
robo\u direct()
函数应该返回并且不打印方向,以便在语句
print robo\u direct()中调用它
将打印方向。

用另一个程序编译
包含在编程中是什么意思?
听起来好像im现在是一个图像对象。@RedX我正在编辑我的问题。。请帮我解释一下好吗?因为我不太明白这个问题。我是编程新手,所以我还在学习。@Python函数中没有return语句的timekeeper隐式返回
None
。这两个函数没有返回语句,因此它们也返回
None
。由于您显然希望它们返回在函数中计算的值,因此我建议返回语句应该用于这些函数。好的,谢谢…我已经解决了…但是出现了新问题。。回溯(最后一次调用):文件“compile3.py”,第51行,在find_形心返回XX/count,YY/count zerodivision错误:整数除法或模乘零
print im is None