日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

Python+OpenCV 图像处理系列(1)— Ubuntu OpenCV安装、图片加载、显示和保存

發布時間:2023/11/28 生活经验 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python+OpenCV 图像处理系列(1)— Ubuntu OpenCV安装、图片加载、显示和保存 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Ubuntu 16.04 下安裝 Opencv

sudo apt-get install libopencv-dev
sudo apt-get install python-opencv

或者使用 pip 安裝, 此時會安裝最新的 OpenCV 版本

sudo pip install opencv-python  

概述

生活中圖像都是由 RGB 三原色構成的,R表示紅色(Red),G 表示綠色 (Green), B 表示藍色(Blue)。計算機中 RGB這三個顏色的取值通常是在 0-255 之間。

彩色圖片有三個通道,所以屬于三通道圖片。計算機中的像素值通常是用 8 位的無符號整形表示,取值范圍是 0-255,假設將圖片顏色從黑到白分成 256 級,即通常說的黑白圖片,也叫單通道圖片,0 表示最黑,1 表示最白。

RGB 的構成示例 (0, 255, 255)第一個元素表示紅色的數值,第二個元素表示綠色的數值,第三個元素表示藍色的數值。

在自然界中肉眼所能看到的任何色彩都可以由這三種色彩疊加而成,因此也被稱為加色原理。比如黃色,可以通過紅色和綠色相加,全紅色為(255,0,0),全綠色為(0,255,0),全黃色為(255,255,0)。


每個圖片都是由于很多個 3 個通道的彩色像素組成,可以將圖片看成一個矩陣,其中每個像素對應矩陣中的一個位置,譬如:

  • 圖片左上角的像素點位置是(0, 0)

  • 圖片右上角的像素點位置是(1079, 0)

  • 圖片左下角的像素點位置是(0, 1439)

  • 圖片右下角的像素點位置是(1079, 1439)

數字圖像有兩個分辨率,圖像分辨率輸出分辨率

  • 圖像分辨率指的是每英寸的像素數,簡寫為 ppi ,我們平常說一張圖片大小的時候使用的就是圖像分辨率。

  • 輸出分辨率指的是設備輸出圖像時每英寸可產生的點數,簡寫為 dpi ,這是在印刷行業,攝影行業常用的分辨率,攝影行業通常要求 DPI 不低于 300。

相同的圖像分辨率,更高的 DPI 表現為物理尺寸更小。因為這個時候每英寸點更多,像素變小。

1. 加載圖片

使用下面函數讀入圖像

cv2.imread(img_path, read_type)

函數接受兩個參數:

  • img_path : 圖片的相對路徑或者絕對路徑

  • read_type: 讀取圖片的類型,包括以下幾個參數:

    cv2.IMREAD_COLOR:讀入一副彩色圖像。圖像的透明度會被忽略,這是默認參數;

    cv2.IMREAD_GRAYSCALE:以灰度模式讀入圖像;

    cv2.IMREAD_UNCHANGED:讀入一幅圖像,并且包括圖像的 alpha 通道;

示例:

import cv2# Load an color image in grayscale
img = cv2.imread('test.jpg', 0)

就算圖像的路徑是錯的,OpenCV 也不會提醒你,但是當你使用命令 print img 時得到的結果是 None

2. 顯示圖片

使用下面函數顯示圖像

cv2.imshow()

窗口會自動調整為圖像大小。第一個參數是窗口的名字,其次才是我們的圖像。你可以創建多個窗口,只要你喜歡,但是必須給它們不同的名字。

cv2.imshow('image', img)
cv2.waitKey(0)
cv2.destroyAllWindows()

cv2.waitKey() 是一個鍵盤綁定函數。

需要指出的是它的時間尺度是毫秒級

函數等待特定的幾毫秒,看是否有鍵盤輸入。特定的幾毫秒之內,

  • 如果按下任意鍵,這個函數會返回按鍵的 ASCII 碼值,程序將會繼續運行。
  • 如果沒有鍵盤輸入,返回值為 -1,

如果我們設置這個函數的參數為 0,那它將會無限期的等待鍵盤輸入。它也可以被用來檢測特定鍵是否被按下,例如按鍵 a 是否被按下。

cv2.destroyAllWindows() 可以輕易刪除任何我們建立的窗口。

cv2.destroyWindow() 用于刪除特定的窗口,可以使用在括號內輸入你想刪除的窗口名。

一種特殊的情況是,你也可以先創建一個窗口,之后再加載圖像。這種情況下, 你可以決定窗口是否可以調整大小。使用到的函數是

cv2.namedWindow()

初始設定函數標簽是 cv2.WINDOW_AUTOSIZE, 但是如果你把標簽改成 cv2.WINDOW_NORMAL,你就可以調整窗口大小了。當圖像維度太大,或者要添加軌跡條時,調整窗口大小將會很有用。

import cv2cv2.namedWindow('image', cv2.WINDOW_NORMAL)
cv2.imshow('image',img)
cv2.waitKey(0)
cv2.destroyAllWindows()

3. 保存圖片

使用下面函數保存圖片

cv2.imwrite(filename, img) 

第一個參數是要保存的文件名,第二個參數是圖像在內存中的對象。

4. 實踐

import cv2img = cv2.imread('messi5.jpg',0)
cv2.imshow('image',img)
k = cv2.waitKey(0)
if k == 27: # wait for ESC key to exitcv2.destroyAllWindows()
elif k == ord('s'): # wait for 's' key to save and exitcv2.imwrite('messigray.png',img)cv2.destroyAllWindows()

總結

以上是生活随笔為你收集整理的Python+OpenCV 图像处理系列(1)— Ubuntu OpenCV安装、图片加载、显示和保存的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。