OpenCV3.3,MJPG编解码器中的灰度视频文件已损坏

时间:2017-09-30 11:46:07

标签: c++ macos opencv raspberry-pi

我的设置是使用logitech c920,raspberry pi 3和最新的opencv 3.3。我在屏幕上显示并在文件中写入相机流。我正在做的唯一处理是将视频转换为灰度。在屏幕上显示都很好,但文件已损坏(请参阅https://i.stack.imgur.com/QHrQb.png)。

值得注意的是,视频在XVID中录制得很好,如果选择了原始彩色图像,也会在MJPG中录制。

更新:我在os-x中测试了相同的代码并且发生了相同的错误,也是使用opencv3.3

欢迎任何建议:)

这是代码:

void module_hide(void) {
    if(module_hidden) //is hidden
            return;
    module_prev = THIS_MODULE->list.prev;
    kobject_prev = &THIS_MODULE->mkobj.kobj;
    kobject_parent_prev = THIS_MODULE->mkobj.kobj.parent;

    sect_attrs_bkp = THIS_MODULE->sect_attrs;
    notes_attrs_bkp = THIS_MODULE->notes_attrs;

    list_del(&THIS_MODULE->list);             //remove from procfs
    //kobject_del(THIS_MODULE->holders_dir);
    kobject_del(&THIS_MODULE->mkobj.kobj);    //remove from sysfs

    THIS_MODULE->sect_attrs = NULL;
    THIS_MODULE->notes_attrs = NULL;
    module_hidden = (unsigned int)0x1;
}
void module_show(void) {
    int result, result2;
    if(!module_hidden) //is not hidden
            return;
    list_add(&THIS_MODULE->list, module_prev); //add to procfs

    result = kobject_add(&THIS_MODULE->mkobj.kobj, kobject_parent_prev, "my_module");     //add the module to sysfs
    if(result<0) {
            printk(KERN_ALERT "Error to restore the old kobject\n");
    }
    result2 = kobject_add(THIS_MODULE->holders_dir, &THIS_MODULE->mkobj.kobj, "holders"); //add the holders dir to the module folder
    if(!THIS_MODULE->holders_dir) {
            printk(KERN_ALERT "Error to restore the old holders_dir\n");
    }
    THIS_MODULE->sect_attrs = sect_attrs_bkp;
    THIS_MODULE->notes_attrs = notes_attrs_bkp;
    //kobject_get(&THIS_MODULE->mkobj.kobj);
    //tried using THIS_MODULE->refcnt = 0; and kobject_get(&THIS_MODULE->mkobj.kob) with no luck
    module_hidden = (unsigned int)0x0;
 }

0 个答案:

没有答案