第一天,影象的讀取,顯示和尺寸變換
c++,python,MATLAB各實現一遍,以這個頭骨影象為例吧
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
需要注意的是需要在clion的congiguration中設定好檔案路徑和工作環境
使用的是CV_WINDOW_NORMAL,可以用滑鼠拖動影象的大小,效果如圖:
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(’縮小圖‘); % 標題要放在影象後面
python和c++如果需要按某種方法縮放,還得設定插值方法,而MATLAB只需要在resize後面備註一下就行了,商業化的軟體就是方便,就是MATLAB介面有點醜,不如其他IDE花花綠綠多好看。