利用OpenCV判斷是否加載圖片的兩種方法
OpenCV判斷是否加載圖片問題
OpenCV加載圖片是圖像處理最基本的操作,但有的時(shí)候我們加載圖片會因?yàn)閳D片路徑不正確或者沒有圖片等原因而報(bào)錯,經(jīng)常寫代碼的憑經(jīng)驗(yàn)就知道是哪錯了,但初學(xué)者一般是看不懂這些錯誤,就會很惱火了,如果加個(gè)判斷語句就會不一樣了啥,如果是圖片路徑的原因而導(dǎo)致加載不到圖片,它會在終端顯示你要輸出的錯誤信息,這樣一看就很清楚了。
【方法一】
src = imread( "1.jpg" ,CV_LOAD_IMAGE_COLOR ); //注意路徑得換成自己的 //判斷是否加載圖片 if(!src.data) { cout<<"Picture loading failed !"<<endl; return -1; }
注意:判斷里面是!src.data,有感嘆號,沒括號的,它不是函數(shù)。
【方法二】
src = imread( "1.jpg" ,CV_LOAD_IMAGE_COLOR ); //注意路徑得換成自己的 if(src.empty()) { cout<<"Picture loading failed !"<<endl; return -1; }
注意:判斷里面是src.empty(),這里就調(diào)用了一個(gè)函數(shù),輸代碼的時(shí)候要仔細(xì)。
最后放張圖:
OpenCV圖片的加載顯示和保存
圖片的加載與顯示
import cv2 as cv import numpy as np ''' cv2.imread() imread函數(shù)有兩個(gè)參數(shù),第一個(gè)參數(shù)是圖片路徑,第二個(gè)參數(shù)表示讀取圖片的形式,有三種: cv2.IMREAD_COLOR:加載彩色圖片,這個(gè)是默認(rèn)參數(shù),可以直接寫1。 cv2.IMREAD_GRAYSCALE:以灰度模式加載圖片,可以直接寫0。 cv2.IMREAD_UNCHANGED:包括alpha,可以直接寫-1。 而imread函數(shù)的第二個(gè)參數(shù)不寫就是默認(rèn)讀原始圖片 imshow()函數(shù): 有兩個(gè)參數(shù),第一個(gè)參數(shù)為顯示的窗口名,第二個(gè)為顯示的圖像 ''' 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)
運(yùn)行結(jié)果
可以看到兩種形式是一樣的
另:cv2.waitKey()函數(shù)用法:
waitKey()–是在一個(gè)給定的時(shí)間內(nèi)(單位ms)等待用戶按鍵觸發(fā);
如果用戶沒有按下鍵,則接續(xù)等待(循環(huán))
常見:設(shè)置waitKey(0),則表示程序會無限制的等待用戶的按鍵事件
一般在imgshow的時(shí)候,如果設(shè)置waitKey(0),代表按任意鍵繼續(xù)
圖像的保存
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函數(shù)的第三個(gè)參數(shù)指定保存圖像的質(zhì)量或者壓縮率。對于jpeg,其表示圖像的質(zhì)量,0-100,數(shù)值越大圖像質(zhì)量越好,默認(rèn)值是95。對于png,設(shè)置的值壓縮率,0-9,數(shù)值越大壓縮率越高,圖像越小。
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
requests.post()方法中data和json參數(shù)的使用
這篇文章主要介紹了requests.post()方法中data和json參數(shù)的使用方式,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-02-02Python+Selenium實(shí)現(xiàn)網(wǎng)站滑塊拖動操作
這篇文章主要為大家詳細(xì)介紹了如何利用Python+Selenium模擬實(shí)現(xiàn)登錄某網(wǎng)站的滑塊拖動操作,文中的示例代碼講解詳細(xì),需要的可以參考一下2022-09-09python 動態(tài)遷移solr數(shù)據(jù)過程解析
這篇文章主要介紹了python 動態(tài)遷移solr數(shù)據(jù)過程解析,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2019-09-09Django import export實(shí)現(xiàn)數(shù)據(jù)庫導(dǎo)入導(dǎo)出方式
這篇文章主要介紹了Django import export實(shí)現(xiàn)數(shù)據(jù)庫導(dǎo)入導(dǎo)出方式,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-04-04Python數(shù)據(jù)處理利器Slice函數(shù)用法詳解
這篇文章主要給大家介紹了關(guān)于Python數(shù)據(jù)處理利器Slice函數(shù)用法的相關(guān)資料,slice函數(shù)是Python中的一個(gè)內(nèi)置函數(shù),用于對序列進(jìn)行切片操作,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-03-03使用python?pywin32模塊創(chuàng)建windows服務(wù)實(shí)例探究
這篇文章主要為大家介紹了使用python?pywin32模塊創(chuàng)建windows服務(wù)實(shí)現(xiàn)實(shí)例探究,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2024-01-01Python使用Srapy框架爬蟲模擬登陸并抓取知乎內(nèi)容
這里我們來看如何通過Python使用Srapy框架爬蟲模擬登陸并抓取知乎內(nèi)容的實(shí)例,要實(shí)現(xiàn)持續(xù)的爬取需要利用到cookie的保存,我們首先還是來回顧一下cookie的相關(guān)知識點(diǎn):2016-07-07