計算機視覺學習筆記1 影象讀取顯示和尺寸變換

第一天,影象的讀取,顯示和尺寸變換

c++,python,MATLAB各實現一遍,以這個頭骨影象為例吧

計算機視覺學習筆記1 影象讀取顯示和尺寸變換

c++呼叫OpenCv實現影象顯示和尺寸變換

c++用的編譯器為clion,因此需要先配置cmake檔案,具體如下:

cmake_minimum_required(VERSION 3。13) # cmake標本project(task1) # 專案名稱set(CMAKE_CXX_STANDARD 14) set(CMAKE_CXX_FLAGS “-fPIC”)find_package(OpenCV REQUIRED) # 查詢OpenCV,加上required表示重要include_directories(${OpenCV_INCLUDE_DIRS}) # 新增標頭檔案add_executable(ex1 ex1。cpp) # 設定執行檔案target_link_libraries(ex1 ${OpenCV_LIBS}) # 將OpenCV新增到執行檔案上

程式碼如下:

#include //讀取影象用的三cv2不是cv4#include // 標準輸入輸出流#include using namespace cv;int main(int argc, char **argv){ Mat img = imread(“data/images/head。jpg”); // 讀取影象 if (img。empty()){ std::cerr << “Couldn‘t load image \n” << std::endl; } std::cout << img。size << std::endl; Mat dst = Mat::zeros(800,1200, CV_8UC3); //這種方法可以設定尺寸 resize(img, dst,dst。size()); Mat src; resize(img, src, Size(), 1。5, 1。5); // 長寬都變為原來的1。5倍 // namedWindow(“image”, CV_WINDOW_NORMAL); // 滑鼠拖動調節大小 namedWindow(“image”, CV_WINDOW_AUTOSIZE); imshow(“原影象”, img); // 顯示影象 imshow(“放大圖”, src); waitKey(0); // 重新整理影象,不然可能不顯示影象 return 0;}

需要注意的是需要在clion的congiguration中設定好檔案路徑和工作環境

使用的是CV_WINDOW_NORMAL,可以用滑鼠拖動影象的大小,效果如圖:

計算機視覺學習筆記1 影象讀取顯示和尺寸變換

python呼叫OpenCV

實現影象顯示和尺寸變換

python相對來說要簡單一點,實現效果和c++基本一樣,程式碼如下:

import cv2 as cv % 呼叫opencvimport numpy as np % 呼叫numpy,用於矩陣img = cv。imread(“data/images/head。jpg”)cv。namedWindow(“image”, cv。WINDOW_AUTOSIZE) # 自動適應影象大小cv。namedWindow(“image”, cv。WINDOW_NORMAL) # 滑鼠控制影象大小size = img。shape # 讀取img尺寸print(size)dst = np。zeros((1200, 800), np。uint8)dst = cv。resize(img, (dst。shape[0], dst。shape[1]))cv。imshow(“原影象”, img)cv。imshow(“放大圖”, dst)cv。waitKey(0) # 重新整理影象cv。destroyAllWindows() #關閉視窗

值得注意的是,python的zeros和resize介面和c++不一樣。

python同樣需要在congiguration中設定好檔案路徑和工作環境。

MATLAB

實現影象顯示和尺寸變換

MATLAB應該是做影象處理最方便的了,都不用考慮載入庫,配置環境,而且集成了很多函式功能,開啟就能用。

具體程式碼如下:

img = imread(’data/head。jpg‘);dst = imresize(img, 0。5, ’nearest‘); %這裡是把影象縮放為0。5倍,採用最近臨插值法imshow(img);title(’原影象‘);figure, %新建影象框imshow(dst);title(’縮小圖‘); % 標題要放在影象後面

計算機視覺學習筆記1 影象讀取顯示和尺寸變換

python和c++如果需要按某種方法縮放,還得設定插值方法,而MATLAB只需要在resize後面備註一下就行了,商業化的軟體就是方便,就是MATLAB介面有點醜,不如其他IDE花花綠綠多好看。