第一天,图像的读取,显示和尺寸变换
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 <opencv2/opencv.hpp> //读取图像用的三cv2不是cv4 #include <iostream> // 标准输入输出流 #include <opencv2/highgui/highgui_c.h> 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,可以用鼠标拖动图像的大小,效果如图:
python调用OpenCV实现图像显示和尺寸变换
python相对来说要简单一点,实现效果和c++基本一样,代码如下:
import cv2 as cv % 调用opencv import 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花花绿绿多好看。
本文暂时没有评论,来添加一个吧(●'◡'●)