首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用openCV和python时,get(cv2.CAP_PROP_FOURCC)返回错误

使用openCV和python时,get(cv2.CAP_PROP_FOURCC)返回错误
EN

Stack Overflow用户
提问于 2016-03-20 17:34:41
回答 1查看 1.8K关注 0票数 0

我必须读取一个本地的.avi文件,并使它shaw在一个window.Here上是我的代码:

代码语言:javascript
复制
import os,cv2
user=os.path.expanduser('~')
capture=cv2.VideoCapture(str(user)+"/Downloads/vehicle/Sunny/april21.avi")
if(capture.isOpened()):
    print "Open"
else:
    print "Fail to open!"
fps=capture.get(cv2.CAP_PROP_FPS)
fourcc=capture.get(cv2.CAP_PROP_FOURCC)
print fourcc#why fourcc is return 0.0?
print "fps:%d"%fps
size=(int(capture.get(cv2.CAP_PROP_FRAME_WIDTH))/2,
    (int)(capture.get(cv2.CAP_PROP_FRAME_HEIGHT))/2
    )
isStop=1
while isStop:
    grabbed,frame=capture.read()#frame is None
    cv2.namedWindow("window")
    img=cv2.resize(frame,size,interpolation=cv2.INTER_CUBIC)
    cv2.imshow("window",img)
    c=0xFF&cv2.waitKey(1)
    if c ==27:
        isStop=False
        cv2.destroyAllWindows()

但现在的结果是:

代码语言:javascript
复制
Open
0.0
fps:29
OpenCV Error: Assertion failed (ssize.area() > 0) in resize, file /Users/tom/opencv-3.1.0/modules/imgproc/src/imgwarp.cpp, line 3229
Traceback (most recent call last):
  File "/Users/tom/Documents/readVideo.py", line 20, in <module>
    img=cv2.resize(frame,size,interpolation=cv2.INTER_CUBIC)
cv2.error: /Users/tom/opencv-3.1.0/modules/imgproc/src/imgwarp.cpp:3229: error: (-215) ssize.area() > 0 in function resize

我唯一确定的是这些代码是正确的,因为我已经通过cv2.VideoWriter创建了一个.avi文件,它可以被读取并显示在窗口上。谢谢你的回答。

EN

回答 1

Stack Overflow用户

发布于 2016-05-30 21:29:56

OpenCV返回的数据类型很可能是一个双精度型(浮点),它的任意内容(FOURCC码)是无效的(不符合IEEE )。

我不懂Python,但是下面的C/C++代码片段可以完成这项工作:

代码语言:javascript
复制
union {
    char    c[5];
    int     i;
} myfourcc;
myfourcc.i = capture.get(CV_CAP_PROP_FOURCC);
myfourcc.c[4] = '\0';
std::cout << "4cc:" << myfourcc.c << std::endl;

我猜Python有一种比ctype更惯用的方式。只有我的便士。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36112147

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档