网站首页 > 技术文章 正文
第一天,图像的读取,显示和尺寸变换
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花花绿绿多好看。
猜你喜欢
- 2024-09-30 OPENCV-python 第一天 python opencv教程
- 2024-09-30 Python帮您十步搞定人脸检测 人脸检测 python
- 2024-09-30 OpenCV学习笔记(一)之图像金字塔-上采样与降采样与DOG
- 2024-09-30 Ubuntu18.04LTS下OpenCV的配置 ubuntu opencv4
- 2024-09-30 计算机视觉之Opencv(1)——基本操作
- 2024-09-30 OpenCV系列教程_03 opencv官方教程
- 2024-09-30 CV之 HOG特征描述算子-行人检测 卜算子 黄州定慧院寓居作
- 2024-09-30 OpenCV SURF特征点检测和匹配 opencv特征提取方法
- 2024-09-30 Opencv从零开始 - [启蒙篇] - 读取、几何变换
- 2024-09-30 密码忘记了?没事,我早就用Python给你监听了
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)