计算机系统应用教程网站

网站首页 > 技术文章 正文

计算机视觉学习笔记1 图像读取显示和尺寸变换

btikc 2024-09-30 13:12:49 技术文章 14 ℃ 0 评论

第一天,图像的读取,显示和尺寸变换

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花花绿绿多好看。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表