使用OpenCV的cv.SaveImage时出现RuntimeError

15 投票
3 回答
51347 浏览
提问于 2025-04-15 20:31

我想把一个jpg格式的文件转换成png格式,但是当我运行这段代码时:

from opencv import _cv    
from opencv.highgui import cvSaveImage, cvLoadImage

cvSaveImage("bet.jpg",cvLoadImage("bet.jpg")) 

if __name__ == '__main__':
    pass

它给了我一个我不明白的错误:

Traceback (most recent call last):
  File "convert.py", line 6, in <module>
    cvSaveImage("bet.jpg",cvLoadImage("bet.jpg")) 
  File "/usr/lib/pymodules/python2.6/opencv/highgui.py", line 183, in cvSaveImage
    return _highgui.cvSaveImage(*args)
RuntimeError:  openCV Error:
        Status=Null pointer
        function name=cvGetMat
        error message=NULL array pointer is passed
        file_name=cxarray.cpp
        line=2780

我的图片和源代码在同一个文件夹里,图片的名字是bet.jpg

有没有什么想法呢?

3 个回答

15

根据Python CV文档,使用CV2方法将jpeg格式的图片转换为png格式的方法是:

Python: cv2.imwrite(filename, img[, params]) → retval

在我的例子中:

import cv2
filename = 'pic.jpeg'
cam = cv2.VideoCapture(filename)
s, img = cam.read()
picName = 'pic.png'
cv2.imwrite(picName, img)

VideoCapture这个功能很不错,它可以处理视频、网络摄像头和图片文件。

24

最好的选择是 pyopencv:

import pyopencv as cv

img = cv.imread('01.png')

cv.imshow('img-windows',img)
cv.waitKey(0)
cv.imwrite('01.png',img)
3

我解决了这个问题,之前我从谷歌图片上随便找的那张图片加载不出来。可能是那张图片被加密了,或者我不知道的其他原因。我试了其他的图片,结果都很好。所以在复制图片的时候要小心哦 : )

撰写回答