thepresent 发表于 2022-5-10 19:15:24

求助树莓派中使用Opencv写图片出错的问题

在树莓派上写了一个使用Opencv采集图片的python程序,程序每10秒保存一张640*480的灰度图片。图片保存的格式是jpg,代码
cv2.imwrite(imgPath,lastGray),
结果发现一天里面产生的大概8千张图片会丢失十几张,保存成功的一些图片也有一些图片只保存了一半。查了一下说是opencv保存为jpg格式的时候会出问题,建议改成bmp格式的。这个我改成了bmp格式,正在重新采集。目前还没有结果。
但是刚才发现了另外一个很奇怪的问题,我在树莓派上安装软件的时候,提示我
dpkg: unrecoverable fatal error, aborting:
files list file for package 'libgs9:armhf' is missing final newline
我看了一下/var/lib/dpkg/info/libgs9:armhf.list文件,发现里面的内容居然是我之前保存的图片文件的名字,这些文件的保存时间也不是连续的,没有什么规律。而且文件名中的大写的首字母也变成小写了。

从这个文件内容看,像是文件系统中的目录项的结构。
struct ext4_dir_entry_2 {
        __le32        inode;                        /* Inode number */
        __le16        rec_len;                /* Directory entry length */
        __u8        name_len;                /* Name length */
        __u8        file_type;
        char        name;        /* File name */
};
这一点就挺可怕了,就是说我写用opencv写图片的时候会污染磁盘中的其他文件。当然期间我也做了一些其他操作,但是肯定是没有操作这个/var/lib/dpkg/info/libgs9:armhf.list文件。
所以我的疑惑是这个问题是怎么产生的。是python的bug?是opencv的bug?还是linux文件系统的bug?是树莓派可靠性的问题?还是我自己操作失误造成的问题?
如果是我自己操作造成的问题的话还好。但是如果是这些bug的话,那么后面做东西的话真要好好考虑了。
麻烦熟悉linux的大神帮忙解惑啊。谢谢。

dukelec 发表于 2022-5-10 23:14:57

數據是寫到 tf 卡上面的吧?
會不會是卡的問題?什麼牌子什麼規格的卡?

thepresent 发表于 2022-5-11 02:12:45

dukelec 发表于 2022-5-10 23:14
數據是寫到 tf 卡上面的吧?
會不會是卡的問題?什麼牌子什麼規格的卡?
(引用自2楼)

谢谢大神回复。
确实是写到tf卡上的,这个树莓派已经连续运行将近两年,之前没有存储的需求,所以也没关注。最近增加功能的时候想着先存在tf卡上做调试。TF卡是闪迪的U1 C10卡。
现在也感觉是TF卡的问题。之前也想过可能是tf卡的问题,但是考虑到我自己用的小蚁摄像头里面的存储卡已经用了五年了,功能一直正常,我是觉得视频写入的话肯定要比我这种写入图片的方式要更频繁,当时就感觉可能不是tf卡的问题。
大神,麻烦问一下,对于tf卡的这种故障,linux有没有一个纠错或者报警的机制?今天要不是碰巧要安装软件,还发现不了这个问题。这种故障能不能在软件中识别出来?如果linux无法发现tf卡故障,那么我改用固态硬盘的话,是不是就能在一定的时间里避免这个问题了?

dukelec 发表于 2022-5-11 02:52:59

本帖最后由 dukelec 于 2022-5-11 03:01 编辑

thepresent 发表于 2022-5-11 02:12
谢谢大神回复。
确实是写到tf卡上的,这个树莓派已经连续运行将近两年,之前没有存储的需求,所以也没关 ...
(引用自3楼)

linux 系統一般一定次數關機/開機(umount/mount)後,再次開機 mount 的時候會自動用 fsck 強制檢查一下文件系統,如果有錯會打印出來,可以通過系統 log 查看是否有錯

還有就是,比較差的 tf 卡和 u 盤,有的時候感覺不正常,dmesg 可以看到頻繁報告 io 錯誤,這個錯誤意味着卡和 u 盤可以扔了(排除接觸不良的情況下)

更重要的還是卡的質素,買 tf 卡有一個重要事項:國際大廠的前提下,要買包裝上明確標註了寫速度的卡,寫的速度至少要達到 60MB/s

還有是要避免意外斷電,建議你程序定時全盤 sync

thepresent 发表于 2022-5-11 17:17:59

dukelec 发表于 2022-5-11 02:52
linux 系統一般一定次數關機/開機(umount/mount)後,再次開機 mount 的時候會自動用 fsck 強制檢查一下 ...
(引用自4楼)

谢谢回复。
今天又看了一下昨天下午开始采集的数据,果然又出问题了。我昨天也用另外一个基本上没有用过的树莓派采集数据,一天没出问题。看来就是TF卡坏了。准备先挂个移动固态硬盘暂时用着。后面买一个cm4配上nvme的硬盘来存数据。现在涨价太厉害了。

dukelec 发表于 2022-5-11 17:45:57

thepresent 发表于 2022-5-11 17:17
谢谢回复。
今天又看了一下昨天下午开始采集的数据,果然又出问题了。我昨天也用另外一个基本上没有用过 ...
(引用自5楼)

tf 卡買好點的還是比較可靠的,我電腦用 tf 卡做擴展硬盤,存放代碼等重要數據(有定期備份)

sandisk 的卡紅黑的比較好,其次是紅黃,最差的是紅灰,只有最差的沒標寫速度。

rei1984 发表于 2022-5-11 19:56:25

红黑当然好啦

thepresent 发表于 2022-5-11 20:48:05

dukelec 发表于 2022-5-11 17:45
tf 卡買好點的還是比較可靠的,我電腦用 tf 卡做擴展硬盤,存放代碼等重要數據(有定期備份)

sandisk...
(引用自6楼)

嗯,谢谢。果然,我买的的是红灰。以后要买红黑啦
页: [1]
查看完整版本: 求助树莓派中使用Opencv写图片出错的问题