Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用cvtColor()函数将图像转换为灰度时出现问题_Python_Opencv - Fatal编程技术网

Python 使用cvtColor()函数将图像转换为灰度时出现问题

Python 使用cvtColor()函数将图像转换为灰度时出现问题,python,opencv,Python,Opencv,无法将视频媒体文件夹导入程序以转换为灰度。 这是我的密码 import cv2 import math import numpy as np cap=cv2.VideoCapture("‪C:/Users/azert/Desktop/LONDON WALK _ Oxford Street to Carnaby Street _ England(240P)_1.mp4") body=cv2.CascadeClassifier("C:/Users/azert/anaco

无法将视频媒体文件夹导入程序以转换为灰度。 这是我的密码

import cv2
import math
import numpy as np
cap=cv2.VideoCapture("‪C:/Users/azert/Desktop/LONDON WALK _ Oxford Street to Carnaby Street _ England(240P)_1.mp4")
body=cv2.CascadeClassifier("C:/Users/azert/anaconda3/Lib/site-packages/cv2/data/haarcascade_fullbody.xml")
while  1:   
    r,img=cap.read()
    gray= cv2.cvtColor(img,cv2.COLOR_RGB2GRAY)
    bd=body.detectMultiScale(gray,1.1,2)
    for(x,y,w,h) in bd :
       cv2.rectangle(img,(x,y),(x+w,y+h),(0,255,0),1) 
       for(x1,y1,w1,h1) in bd:
             distance=[]
             d1=w-w1
             d2=h-h1
             d=math.sqrt((d1**2)+(d2**2))
             distance.append(d)
       s=len(distance)
       N=0.5
       for i in range (s):
             if( distance[i]<N) :
                      cv2.line(img,(w,h),(w1,h1),(255,0,0),3,8)
                      cv2.imshow("image",img)
    if  cv2.waitKey(1) & 0xFF == ord('q'):
        break 
cap.release()
cv2.destroyAllWindows()
导入cv2
输入数学
将numpy作为np导入
cap=cv2.视频捕获(“‪C:/Users/azert/Desktop/LONDON WALK uOxford Street to Carnaby Street uu英格兰(240P)1.mp4“)
body=cv2.CascadeClassifier(“C:/Users/azert/anaconda3/Lib/site packages/cv2/data/haarcascade_fullbody.xml”)
而1:
r、 img=上限读取()
灰色=cv2.CVT颜色(img,cv2.COLOR\u RGB2GRAY)
bd=车身检测多尺度(灰色,1.1,2)
对于bd中的(x,y,w,h):
cv2.矩形(img,(x,y),(x+w,y+h),(0255,0),1)
对于bd中的(x1,y1,w1,h1):
距离=[]
d1=w-w1
d2=h-h1
d=数学sqrt((d1**2)+(d2**2))
距离。追加(d)
s=长度(距离)
N=0.5
对于范围内的i:

if(distance[i]当
cvtColor
函数的第一个参数不存在时,会发生此错误。视频流结束时,您的程序不会退出(因为ov
while 1

检查img是否存在

r,img=cap.read()
if img:
    #do thing
else:
    #exit
最好和你的朋友一起使用

while cap.isOpened():
    #rest of code
     

cvtColor
函数的第一个参数不存在时会发生此错误。视频流结束时,程序不会退出(因为ov
while 1

检查img是否存在

r,img=cap.read()
if img:
    #do thing
else:
    #exit
最好和你的朋友一起使用

while cap.isOpened():
    #rest of code
     

我想提及代码中可能存在的三个问题:

  • 可能的问题#1:

  • 确保正确定义路径

  • 我写这篇文章的原因是,通常
    haarcascades
    的xml位于
    data/haarcascades/haarcascade\u fullbody.xml

  • 当我在您的代码中看到
    data/haarcascade\u fullbody.xml
    时,我想我应该警告您正确的路径

  • 可能的问题#2:


  • 原因是
    cap.read()
    返回两个变量

  • 您应该使用以下方法检查图像是否返回

    • 如果r:
      灰色=cv2.CVT颜色(img,cv2.COLOR\u RGB2GRAY)
      ...
      ..
      .
      
    • r
      是一个布尔变量,如果返回
      False
      则表示未从当前视频中提取帧

  • 可能的问题#3:


  • opencv以
    BGR
    模式读取图像。因此,在转换帧时,应使用
    cv2.BGR2GRAY
    而不是
    cv2.RGB2GRAY

代码的其余部分似乎还可以。

我想提及代码中可能存在的三个问题:

  • 可能的问题#1:

  • 确保正确定义路径

  • 我写这篇文章的原因是,通常
    haarcascades
    的xml位于
    data/haarcascades/haarcascade\u fullbody.xml

  • 当我在您的代码中看到
    data/haarcascade\u fullbody.xml
    时,我想我应该警告您正确的路径

  • 可能的问题#2:


  • 原因是
    cap.read()
    返回两个变量

  • 您应该使用以下方法检查图像是否返回

    • 如果r:
      灰色=cv2.CVT颜色(img,cv2.COLOR\u RGB2GRAY)
      ...
      ..
      .
      
    • r
      是一个布尔变量,如果返回
      False
      则表示未从当前视频中提取帧

  • 可能的问题#3:


  • opencv以
    BGR
    模式读取图像。因此,在转换帧时,应使用
    cv2.BGR2GRAY
    而不是
    cv2.RGB2GRAY

剩下的代码似乎没问题。

我认为你的图像是空的。不,不是这样。我用这段代码导入cv2从math导入sqrt导入numpy作为np cap=cv2.VideoCapture(“C:/Users/azert/Desktop/projetMadani/Person.mp4”)body=cv2.CascadeClassifier(“C:/Users/azert/anaconda3/Lib/site packages/cv2/data/haarcascade\u fullbody.xml”)当1:r,img=cap.read()gray=cv2.cvtColor(img,cv2.COLOR_RGB2GRAY)bd=body.detectBD:cv2.rectangle(img,(x,y),(x+w,y+h),(0255,0),1)cv2.imshow(“img”,img)如果cv2.waitKey(1)&0xFF==ord('q'):break我想问题出在第二部分,我试着计算每个矩形与其他矩形的距离,并将其与N进行比较,如果距离在你调用
len(距离)之前,就画一条线
在for循环之外,所以它没有初始化。你能告诉我x和y在bd中是什么意思吗?据说它们是矩形坐标。你能给我画一个矩形,把x和y放在其中,告诉我矩形函数是如何画矩形的吗?我会非常感激的。我认为你的图像是空的。不,它不是或者我用这段代码从math import sqrt import numpy导入cv2作为np cap=cv2.VideoCapture(“C:/Users/azert/Desktop/projetMadani/Person.mp4”)body=cv2.CascadeClassifier(“C:/Users/azert/anaconda3/Lib/site packages/cv2/data/haarcascade_fullbody.xml”),而1:r,img=cap.read()gray=cv2.cvtColor(img,cv2.COLOR\RGB2GRAY)bd=身体。检测bd中(x,y,w,h)的多尺度(灰色,1.2,1):cv2.矩形(img,(x,y),(x+w,y+h),(0255,0),1)cv2.imshow(“img”,img),如果cv2.waitKey(1)和0xFF==ord('q')):break我想问题出在第二部分,我试着计算每个矩形与其他矩形的距离,并将其与N进行比较,如果距离在你调用
len(距离)之前,就画一条线
在for循环之外,所以它没有初始化。你能告诉我x和y在bd中是什么意思吗?据说它们是矩形坐标,你能给我画一个矩形和pl吗