利用OpenCV判断是否加载图片的两种方法
欧阳磊 人气:0OpenCV判断是否加载图片问题
OpenCV加载图片是图像处理最基本的操作,但有的时候我们加载图片会因为图片路径不正确或者没有图片等原因而报错,经常写代码的凭经验就知道是哪错了,但初学者一般是看不懂这些错误,就会很恼火了,如果加个判断语句就会不一样了啥,如果是图片路径的原因而导致加载不到图片,它会在终端显示你要输出的错误信息,这样一看就很清楚了。
【方法一】
src = imread( "1.jpg" ,CV_LOAD_IMAGE_COLOR ); //注意路径得换成自己的 //判断是否加载图片 if(!src.data) { cout<<"Picture loading failed !"<<endl; return -1; }
注意:判断里面是!src.data,有感叹号,没括号的,它不是函数。
【方法二】
src = imread( "1.jpg" ,CV_LOAD_IMAGE_COLOR ); //注意路径得换成自己的 if(src.empty()) { cout<<"Picture loading failed !"<<endl; return -1; }
注意:判断里面是src.empty(),这里就调用了一个函数,输代码的时候要仔细。
最后放张图:
OpenCV图片的加载显示和保存
图片的加载与显示
import cv2 as cv import numpy as np ''' cv2.imread() imread函数有两个参数,第一个参数是图片路径,第二个参数表示读取图片的形式,有三种: cv2.IMREAD_COLOR:加载彩色图片,这个是默认参数,可以直接写1。 cv2.IMREAD_GRAYSCALE:以灰度模式加载图片,可以直接写0。 cv2.IMREAD_UNCHANGED:包括alpha,可以直接写-1。 而imread函数的第二个参数不写就是默认读原始图片 imshow()函数: 有两个参数,第一个参数为显示的窗口名,第二个为显示的图像 ''' im=cv.imread('C:/Users/ASUS/Desktop/rgb2gray/fruit.png')#读取原始图片 im2=cv.imread('C:/Users/ASUS/Desktop/rgb2gray/fruit.png',cv.IMREAD_COLOR)#读取RGB彩色图片 cv.imshow('color image',im) cv.imshow('color image2',im2) cv.waitKey(0)
运行结果
可以看到两种形式是一样的
另:cv2.waitKey()函数用法:
waitKey()–是在一个给定的时间内(单位ms)等待用户按键触发;
如果用户没有按下键,则接续等待(循环)
常见:设置waitKey(0),则表示程序会无限制的等待用户的按键事件
一般在imgshow的时候,如果设置waitKey(0),代表按任意键继续
图像的保存
cv.imwrite('lena2.jpg',im) cv.imwrite('lina_jpeg_quality_90.jpg',im,[int(cv.IMWRITE_JPEG_QUALITY),90]) cv.imwrite('line_png_compress_2.png',im,[int(cv.IMWRITE_PNG_COMPRESSION),2])
cv2.imwrite函数的第三个参数指定保存图像的质量或者压缩率。对于jpeg,其表示图像的质量,0-100,数值越大图像质量越好,默认值是95。对于png,设置的值压缩率,0-9,数值越大压缩率越高,图像越小。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持。
加载全部内容