使用OpenCV的cv.SaveImage时出现RuntimeError
我想把一个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
我解决了这个问题,之前我从谷歌图片上随便找的那张图片加载不出来。可能是那张图片被加密了,或者我不知道的其他原因。我试了其他的图片,结果都很好。所以在复制图片的时候要小心哦 : )