首先我们来看一个实例
import cv2 as cv
src=cv.imread(r"C:\Users\DELL\Desktop\TIM20180421221302.png")
cv.namedWindow("impot image",cv.WINDOW_AUTOSIZE)
cv.imshow("input image",src)
cv.imwrite("路径",img)
cv.waitKey(0)
cv.destroyAllWindows()
第一行不用说是导入包,第三行:调用openCV中的imread函数来读取图像(后面是图像路径)。第四行:用来创建一个窗口,第五行用来展示图片,其实也是展示一个窗口,至于这两个窗口的区别下面再说。第六行是用来保存图片,引号里面是路径(注意路径里面不要有英文)(如果报错的话试着把斜杠改成反斜杠或者变成imwrite(r"路径")
这样的格式)。第七行是用来接收一个标志。最后一行用来关闭窗口。
下面我们来看上面说的两个窗口的区别:
第一个窗口:
下面看第二个窗口:
这里说一下namedWindow这个函数:
void namedWindow(const string& winname, int flags=WINDOW_AUTOSIZE)
然后说明一下两个参数:
第一个:const string& 型的name,指用作窗口的表示符的窗口的名称。
第二个:int类型的flags,窗口的标识有以下几种:
flags标识种类:
WINDOW_NORMAL,可以更改窗口的大小(没有限制)。OpenCV2中可以写为CV_WINDOW_NORMAL。
WINDOW_AUTOSIZE,窗口大小会自动调整以适应所显示的图像,并且不能修改窗口大小。OpenCV2中可以写为CV_WINDOW_AUTOSIZE。此参数是默认值。
WINDOW_OPEMGL,窗口会支持OpenGL。OpenCV2中可以写为CV_WINDOW_OpenGL。
如果有相同名称的窗口已存在,则函数不做任何事情。
然后我发现其实去掉namedWindow函数也不会影响第二个图片输出:
至于为什么前面要加个