关于 opencv 的一个错误问题(Raw image encoder error: Empty JPEG image) - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
itIsUnbelievable

关于 opencv 的一个错误问题(Raw image encoder error: Empty JPEG image)

  •  
  •   itIsUnbelievable Aug 25, 2019 4157 views
    This topic created in 2436 days ago, the information mentioned may be changed or developed.
    Traceback (most recent call last): File "c:\Users\Administrator\Desktop\pyqt_baiduyun\baiduyun1.py", line 111, in run cut_img=get_faceimg(frame,i,face_list) #注册用的剪切后的人脸照片 File "c:\Users\Administrator\Desktop\pyqt_baiduyun\utils\utils.py", line 156, in get_faceimg cut_img_str = cv2.imencode('.jpg', cutImg)[1].tostring() cv2.error: OpenCV(4.1.0) C:\projects\opencv-python\opencv\modules\imgcodecs\src\grfmt_base.cpp:145: error: (-10:Unknown error code -10) Raw image encoder error: Empty JPEG image (DNL not supported) in function 'cv::BaseImageEncoder::throwOnEror' 

    -----------------------分割线--------------------------------
    156 行的函数如下:

    #获取人脸裁剪图片 def get_faceimg(frame,i,face_list): width,top,left,height=get_face_location(i,face_list) #获取人脸的左顶点坐标和长宽。 cutImg = frame[top:top+height,left:left+width] #[y1:y2,x1:x2]切片 cut_img_str = cv2.imencode('.jpg', cutImg)[1].tostring() # 将图片编码成流数据,放到内存缓存中,然后转化成 string 格式 cut_img = str(base64.b64encode(cut_img_str),'utf-8') # 编码成 base64 return cut_img 

    -----------------------分割线--------------------------------
    请问各位老哥这个错误是什么原因呢? 我在 pyqt 里多线程同时调用 opencv 的 videocapture()读取视频的每一帧,对每一帧进行处理。结果经常随机性地报这个错误,google 了没找到合适的解释,下面这篇感觉比较符合: https://www.cnblogs.com/hul201610101100/p/10233211.html
    但是还是不知道如何修改,希望各位老哥给支个招。

    7 replies    2019-12-26 15:39:13 +08:00
    minami
        1
    minami  
       Aug 25, 2019
    把 width,top,left,height 打出来看看吧,可能是获取的宽高非法,导致取不到图片
    Hconk
        2
    Hconk  
       Aug 25, 2019 via iPhone
    在你的 get_faceimg 函数开头判断下 frame 是不是为空,为空就跳过去,概率性的话我猜可能和相机驱动或者相机参数设置有些关系,只是猜测可以检查下。
    itIsUnbelievable
        3
    itIsUnbelievable  
    OP
       Aug 25, 2019
    @minami 这个没问题,因为是对一个视频一直取帧,一般是正常运行了一段时间然后才报这个错,前面图片截取都是正常的。
    itIsUnbelievable
        4
    itIsUnbelievable  
    OP
       Aug 25, 2019
    @Hconk
    while(True):
    ret,frame = cap.read()
    itIsUnbelievable
        5
    itIsUnbelievable  
    OP
       Aug 25, 2019
    @itIsUnbelievable 刚才手快按出去了,尴尬。。。
    while(True):
    ret,frame = cap.read()
    if ret is True:
    pass
    这里我有判断,如果是这里的问题那为何最开始不报错,到后面才报错呢?
    而且我目前读取的是本地视频文件,还没用到摄像头
    bigNewsMaker
        6
    bigNewsMaker  
       Dec 26, 2019
    楼主解决了吗?@ itIsUnbelievable,我最近也碰到这个错误了。
    用 cv2.imread 读入图片,然后使用 cv2.imencode 编码时,也报出这个错。
    bigNewsMaker
        7
    bigNewsMaker  
       Dec 26, 2019
    About     Help     Advertise     Blog     API     FAQ     Solana     1033 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 31ms UTC 23:09 PVG 07:09 LAX 16:09 JFK 19:09
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86