婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > Python-OpenCV:cv2.imread(),cv2.imshow(),cv2.imwrite()的區別

Python-OpenCV:cv2.imread(),cv2.imshow(),cv2.imwrite()的區別

熱門標簽:梅州外呼業務系統 地圖標注視頻廣告 大連crm外呼系統 北京電信外呼系統靠譜嗎 無錫客服外呼系統一般多少錢 洪澤縣地圖標注 百度地圖標注位置怎么修改 高德地圖標注是免費的嗎 老人電話機器人

為什么使用Python-OpenCV?

雖然python 很強大,而且也有自己的圖像處理庫PIL,但是相對于OpenCV 來講,它還是弱小很多。跟很多開源軟件一樣OpenCV 也提供了完善的python 接口,非常便于調用。OpenCV 的最新版是4.0,包含了超過2500 個算法和函數,幾乎任何一個能想到的成熟算法都可以通過調用OpenCV 的函數來實現,超級方便。

基本操作

1、圖像讀入

使用函數cv2.imread(filepath,flags) 讀入圖像。這幅圖像應該在此程序的工作路徑,或者給函數提供完整路徑,第二個參數是要告訴函數應該如何讀取這幅圖片,可省略。

filepath:要讀入圖片的完整路徑 flags:讀入圖片的標志

  • cv2.IMREAD_COLOR:默認參數,讀入一副彩色圖片,忽略alpha通道
  • cv2.IMREAD_GRAYSCALE:讀入灰度圖片
  • cv2.IMREAD_UNCHANGED:顧名思義,讀入完整圖片,包括alpha通道
import cv2
import numpy as np
img = cv2.imread('1.jpg', cv2.IMREAD_GRAYSCALE)

2、顯示圖片

使用函數cv2.imshow(wname,img)顯示圖像,第一個參數是顯示圖像的窗口的名字,第二個參數是要顯示的圖像(imread讀入的圖像),窗口大小自動調整為圖片大小。

cv2.imshow('image',img)
cv2.waitKey(0)
cv2.destroyAllWindows()   #cv2.destroyWindow(wname)
  • cv2.waitKey顧名思義等待鍵盤輸入,單位為毫秒,即等待指定的毫秒數看是否有鍵盤輸入,若在等待時間內按下任意鍵則返回按鍵的ASCII碼,程序繼續運行。若沒有按下任何鍵,超時后返回-1。參數為0表示無限等待。不調用waitKey的話,窗口會一閃而逝,看不到顯示的圖片。
  • cv2.destroyAllWindow()銷毀所有窗口
  • cv2.destroyWindow(wname)銷毀指定窗口

3、保存圖片

使用函數cv2.imwrite(file,img,num)保存一個圖像。第一個參數是要保存的文件名,第二個參數是要保存的圖像。可選的第三個參數,它針對特定的格式:對于JPEG,其表示的是圖像的質量,用0 - 100的整數表示,默認95;對于png ,第三個參數表示的是壓縮級別,默認為3。

注意:

  • cv2.IMWRITE_JPEG_QUALITY類型為 long ,必須轉換成 int
  • cv2.IMWRITE_PNG_COMPRESSION, 從0到9 壓縮級別越高圖像越小
cv2.imwrite('1.png',img, [int( cv2.IMWRITE_JPEG_QUALITY), 95])
cv2.imwrite('1.png',img, [int(cv2.IMWRITE_PNG_COMPRESSION), 9])

變換操作

1、翻轉圖片

使用函數cv2.flip(img,flipcode)翻轉圖像,flipcode控制翻轉效果。

  • flipcode = 0:沿x軸翻轉
  • flipcode > 0:沿y軸翻轉
  • flipcode 0:x,y軸同時翻轉
imgflip = cv2.flip(img,1)

2、復制圖片

imgcopy = img.copy()

3、顏色空間轉換

注意,matplotlib 中圖像通道為 RGB,而 OpenCV 中圖像通道為 BGR。因此進行顯示的時候,要注意交換通道的順序。

彩色圖像轉為灰度圖像

img2 = cv2.cvtColor(img,cv2.COLOR_RGB2GRAY) 

灰度圖像轉為彩色圖像

img3 = cv2.cvtColor(img,cv2.COLOR_GRAY2RGB)

4、裁剪圖片

裁剪出自己感興趣的部分(ROI,region of interest),需要用到numpy的切片功能,因為OpenCV中,圖像就是用numpy.ndarray存儲的。

可以先通過image.shape查看行列數

print(image.shape)

例如返回(708,1000,4)分別表示圖片的高、寬和通道數。

對圖片的裁剪其實就是切片,例如

#得到區域高100~800步長為2,寬200~600步長為1, 通道0
image2 = image[100:800:2, 20:600:1, 0]


#得到原圖,通道2
image3 = image[:, :, 2]

綜合示例

讀入一張圖片并顯示出來,經過操作后,選擇退出或保存。

  import cv2
  import numpy as np
  
  img = cv2.imread('a.jpg')
  cv2.imshow('image',img)
  
  # Wait for keys to exit or save
  k = cv2.waitKey(0)
  if k == 27:                 
     cv2.destroyAllWindows()
 elif k == ord('s'):        
     cv2.imwrite('save_image.jpg', img)
     cv2.destroyAllWindows()

ord('s')表示返回字符s的ASCII值,ASCII值27對應‘Esc'

參考鏈接:

1、https://blog.csdn.net/fu6543210/article/details/80835280

2、http://www.runoob.com/python/python-func-ord.html

到此這篇關于Python-OpenCV:cv2.imread(),cv2.imshow(),cv2.imwrite()的區別的文章就介紹到這了,更多相關OpenCV cv2.imread(),cv2.imshow(),cv2.imwrite()內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • Python中的imread()函數用法說明
  • 解決python cv2.imread 讀取中文路徑的圖片返回為None的問題
  • Python imread、newaxis用法詳解
  • 解決python測試opencv時imread導致的錯誤問題
  • 解決Python下imread,imwrite不支持中文的問題
  • python imread函數詳解

標簽:清遠 泉州 洛陽 安慶 吉林 岳陽 長春 怒江

巨人網絡通訊聲明:本文標題《Python-OpenCV:cv2.imread(),cv2.imshow(),cv2.imwrite()的區別》,本文關鍵詞  Python-OpenCV,cv2.imread,cv2.imshow,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《Python-OpenCV:cv2.imread(),cv2.imshow(),cv2.imwrite()的區別》相關的同類信息!
  • 本頁收集關于Python-OpenCV:cv2.imread(),cv2.imshow(),cv2.imwrite()的區別的相關信息資訊供網民參考!
  • 推薦文章
    主站蜘蛛池模板: 紫云| 鹤岗市| 常山县| 瑞丽市| 宣武区| 渝中区| 廊坊市| 楚雄市| 霍山县| 泸西县| 古丈县| 平乡县| 腾冲县| 高密市| 扶风县| 绵阳市| 县级市| 河北区| 娱乐| 四川省| 屯门区| 精河县| 灵台县| 鲜城| 施甸县| 绥化市| 会同县| 丽水市| 德阳市| 凤凰县| 石林| 尉氏县| 八宿县| 泽库县| 汽车| 敦化市| 德保县| 开江县| 巍山| 资源县| 平利县|