OpenCV基礎(chǔ)操作指南之圖片的讀取與寫出
1、進(jìn)行圖片讀取的函數(shù)是:cv2.imread
cv2.imread函數(shù)語(yǔ)法如下:
cv2.imread(filename,flag=1)
cv2.imread函數(shù)的參數(shù)解釋:
filename:所要讀取圖片的相對(duì)地址(與文件中open函數(shù)的讀取方式一致)
flag:設(shè)置讀取的格式,默認(rèn)為1,表示按照BGR三通道的方式進(jìn)行讀??;如果為0,則以灰度圖單通道的方式讀取。
2、圖片保存的函數(shù)cv2.imwrite:
cv2.imwrite函數(shù)語(yǔ)法:
cv2.imwrite(filename,img)
cv2.imwrite函數(shù)參數(shù)解釋
filename:要保存圖片的名字,程序的相對(duì)地址。
img:要保存的圖片矩陣形式。
程序功能:將.py文件夾中的GBR格式圖片轉(zhuǎn)化成灰度圖。
程序演示:


程序代碼:
import cv2
import numpy as np
Img=cv2.imread('1.jpg',0)
cv2.imwrite('1.jpg',Img)如果想要改變圖片的格式,也可以在保存圖片時(shí),將.jpg改為.png
這樣在程序運(yùn)行結(jié)束后在.py文件中會(huì)發(fā)現(xiàn)一張與1.jpg同樣的圖片1.png。

import cv2
import numpy as np
Img=cv2.imread('1.jpg',0)
cv2.imwrite('1.png',Img)這無非有是一種很好的圖片格式轉(zhuǎn)化的方法。
3、圖片的顯示函數(shù)cv2.imshow
圖片展示函數(shù):cv2.imshow
函數(shù)cv2.imshow的語(yǔ)法:
cv2.imshow(name,img)
cv2.imshow函數(shù)的參數(shù)解釋:
name:展示窗口的名字
img:圖片的矩陣形式
圖片延時(shí)函數(shù)cv2.waitKey
函數(shù)cv2.waitKey語(yǔ)法
cv2.waitKey(time)
cv2.waitKey函數(shù)參數(shù)解釋:
time表示等待的時(shí)間,單位為毫秒。
這個(gè)函數(shù)可以這樣理解,在time時(shí)間內(nèi),計(jì)算機(jī)會(huì)等待我們鍵盤上的命令,如果在time時(shí)間內(nèi)程序沒有等到按鍵指令,他會(huì)自動(dòng)進(jìn)入下一幀。因?yàn)檫@里是圖片,沒有下一幀,所以會(huì)自動(dòng)關(guān)閉窗口。
這里需要注意的是,如果我們把time置為0,并不是等待0毫秒后進(jìn)入下一幀,而是停止在當(dāng)前幀,有按鍵才會(huì)進(jìn)入下一幀,所以顯示單張圖片時(shí),通常用
cv2.waitKey(0);
代碼示例:
import cv2
import numpy as np
img=cv2.imread('1.jpg',cv2.IMREAD_COLOR)
cv2.imshow('image',img)
#為了圖片長(zhǎng)久的保存在程序窗口中,再加一個(gè)延時(shí)函數(shù)
cv2.waitKey(0);
cv2.imwrite('ba_ck_.png',img)
#如果使用了cv2.imshow函數(shù),下面一定要跟著一個(gè)摧毀窗口的函數(shù)
cv2.destroyAllWindows()程序改進(jìn)(1):
上面這個(gè)程序中,顯示完圖片后,按下鍵盤上任意鍵,圖片都會(huì)關(guān)閉。如果我們向按下特定建關(guān)閉程序的話,可以通過一個(gè)if語(yǔ)句來判斷。如果按的不是q鍵,就一直處于while循環(huán)中,知道我們按下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函數(shù),下面一定要跟著一個(gè)摧毀窗口的函數(shù)
cv2.destroyAllWindows()程序改進(jìn)(2):
上述程序中,在我們按下q退出顯示之后,程序會(huì)自動(dòng)保存,若果我們想按下q直接退出,按下s退出并保存,需要再加一個(gè)if條件語(yǔ)句。
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函數(shù),下面一定要跟著一個(gè)摧毀窗口的函數(shù)
cv2.destroyAllWindows()附、OpenCV:讀取圖片總結(jié)
在敲這個(gè)代碼的時(shí)候,犯了很多錯(cuò)誤,一直以為是配置出了問題,然后一直在排查配置,結(jié)果是路徑方式錯(cuò)誤 ,,把 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);
} 
總結(jié)
到此這篇關(guān)于OpenCV基礎(chǔ)操作指南之圖片的讀取與寫出的文章就介紹到這了,更多相關(guān)OpenCV圖片的讀取與寫出內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
使用python搭建代理IP池實(shí)現(xiàn)接口設(shè)置與整體調(diào)度
在網(wǎng)絡(luò)爬蟲中,代理IP池是一個(gè)非常重要的組件,由于許多網(wǎng)站對(duì)單個(gè)IP的請(qǐng)求有限制,因此,我們需要一個(gè)代理IP池,在本文中,我們將使用Python來構(gòu)建一個(gè)代理IP池,然后,我們將使用這個(gè)代理IP池來訪問我們需要的數(shù)據(jù),文中有相關(guān)的代碼示例供大家參考,需要的朋友可以參考下2023-12-12
python使用信號(hào)量動(dòng)態(tài)更新配置文件的操作
這篇文章主要介紹了python使用信號(hào)量動(dòng)態(tài)更新配置文件的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-04-04
python linecache 處理固定格式文本數(shù)據(jù)的方法
今天小編就為大家分享一篇python linecache 處理固定格式文本數(shù)據(jù)的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-01-01
Python中np.percentile和df.quantile分位數(shù)詳解
分位數(shù)(Quantile)亦稱分位點(diǎn)是指將一個(gè)隨機(jī)變量的概率分布范圍分為幾個(gè)等份的數(shù)值點(diǎn),下面這篇文章主要給大家介紹了關(guān)于Python中np.percentile和df.quantile分位數(shù)的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-05-05
Python使用requests模塊發(fā)送http請(qǐng)求的方法介紹
Python?Requests是一個(gè)?HTTP?庫(kù),它允許我們向?Web?服務(wù)器發(fā)送??HTTP?請(qǐng)求,并獲取響應(yīng)結(jié)果,本文將會(huì)詳細(xì)介紹Python?requests模塊如何發(fā)送http請(qǐng)求,文中有相關(guān)的代碼示例,需要的朋友可以參考下2023-06-06
python散點(diǎn)圖雙軸設(shè)置坐標(biāo)軸刻度的實(shí)現(xiàn)
散點(diǎn)圖是一種常用的圖表類型,可以用來展示兩個(gè)變量之間的關(guān)系,本文主要介紹了python散點(diǎn)圖雙軸設(shè)置坐標(biāo)軸刻度的實(shí)現(xiàn),具有一定的參考價(jià)值,感興趣的可以了解一下2024-01-01

