今天給大家介紹一下OpenCV基礎操作中圖片的讀取與寫出怎么進行。,文章的內容小編覺得不錯,現在給大家分享一下,覺得有需要的朋友可以了解一下,希望對大家有所幫助,下面跟著小編的思路一起來閱讀吧。
cv2.imread函數語法如下:
cv2.imread(filename,flag=1)
cv2.imread函數的參數解釋:
filename:所要讀取圖片的相對地址(與文件中open函數的讀取方式一致)
flag:設置讀取的格式,默認為1,表示按照BGR三通道的方式進行讀??;如果為0,則以灰度圖單通道的方式讀取。
cv2.imwrite函數語法:
cv2.imwrite(filename,img)
cv2.imwrite函數參數解釋
filename:要保存圖片的名字,程序的相對地址。
img:要保存的圖片矩陣形式。
程序功能:將.py文件夾中的GBR格式圖片轉化成灰度圖。
程序演示:
程序代碼:
import cv2 import numpy as np Img=cv2.imread('1.jpg',0) cv2.imwrite('1.jpg',Img)
如果想要改變圖片的格式,也可以在保存圖片時,將.jpg改為.png
這樣在程序運行結束后在.py文件中會發現一張與1.jpg同樣的圖片1.png。
import cv2 import numpy as np Img=cv2.imread('1.jpg',0) cv2.imwrite('1.png',Img)
這無非有是一種很好的圖片格式轉化的方法。
圖片展示函數:cv2.imshow
函數cv2.imshow的語法:
cv2.imshow(name,img)
cv2.imshow函數的參數解釋:
name:展示窗口的名字
img:圖片的矩陣形式
圖片延時函數cv2.waitKey
函數cv2.waitKey語法
cv2.waitKey(time)
cv2.waitKey函數參數解釋:
time表示等待的時間,單位為毫秒。
這個函數可以這樣理解,在time時間內,計算機會等待我們鍵盤上的命令,如果在time時間內程序沒有等到按鍵指令,他會自動進入下一幀。因為這里是圖片,沒有下一幀,所以會自動關閉窗口。
這里需要注意的是,如果我們把time置為0,并不是等待0毫秒后進入下一幀,而是停止在當前幀,有按鍵才會進入下一幀,所以顯示單張圖片時,通常用
cv2.waitKey(0);
代碼示例:
import cv2 import numpy as np img=cv2.imread('1.jpg',cv2.IMREAD_COLOR) cv2.imshow('image',img) #為了圖片長久的保存在程序窗口中,再加一個延時函數 cv2.waitKey(0); cv2.imwrite('ba_ck_.png',img) #如果使用了cv2.imshow函數,下面一定要跟著一個摧毀窗口的函數 cv2.destroyAllWindows()
程序改進(1):
上面這個程序中,顯示完圖片后,按下鍵盤上任意鍵,圖片都會關閉。如果我們向按下特定建關閉程序的話,可以通過一個if語句來判斷。如果按的不是q鍵,就一直處于while循環中,知道我們按下q鍵。
import cv2 import numpy as np img=cv2.imread('1.jpg',cv2.IMREAD_COLOR) cv2.imshow('image',img) while 1: if cv2.waitKey(0)==ord('q'): break else: pass#continue cv2.imwrite('ba_ck_.png',img) #如果使用了cv2.imshow函數,下面一定要跟著一個摧毀窗口的函數 cv2.destroyAllWindows()
程序改進(2):
上述程序中,在我們按下q退出顯示之后,程序會自動保存,若果我們想按下q直接退出,按下s退出并保存,需要再加一個if條件語句。
import cv2 import numpy as np img=cv2.imread('1.jpg',cv2.IMREAD_COLOR) cv2.imshow('image',img) while 1: if cv2.waitKey(0)==ord('q'): break if cv2.waitKey(0)==ord('s'): cv2.imwrite('ba_ck_.png',img) break #如果使用了cv2.imshow函數,下面一定要跟著一個摧毀窗口的函數 cv2.destroyAllWindows()
在敲這個代碼的時候,犯了很多錯誤,一直以為是配置出了問題,然后一直在排查配置,結果是路徑方式錯誤 ,,把 Mat img = imread("C:\\Users\\sq.fu\\Desktop\\pic.jpg"); 這句寫成了 Mat img = imread("C:\\Users\\sq.fu\\Desktop pic.jpg"); ,還好最后找出來了
#include <iostream> #include <opencv2\core\core.hpp> #include <opencv2\imgproc\imgproc.hpp> #include <opencv2\highgui\highgui.hpp> using namespace cv; void main( ) { Mat img = imread("C:\\Users\\sq.fu\\Desktop\\pic.jpg"); // Mat img = imread("C:\\Users\\sq.fu\\Desktop\\pic.jpg"); namedWindow("test"); imshow("test",img); waitKey(100); }
以上就是OpenCV基礎操作中圖片的讀取與寫出怎么進行的全部內容了,更多與OpenCV基礎操作中圖片的讀取與寫出怎么進行相關的內容可以搜索億速云之前的文章或者瀏覽下面的文章進行學習哈!相信小編會給大家增添更多知識,希望大家能夠支持一下億速云!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。