学习opencv day1
学习opencv day1
今天是系统学习opencv的第一天
使用工具为opencv4.4.0+vs2019
并已使用cmake配置contrib
参考书目为《opencv计算机视觉编程攻略》+《学习opencv3》
学习内容
1、 装载、显示和储存图像
①std::cout <<
需要加上头文件
#include <iostream>
否则会出现:namespace没有成员cout
且其必须在main函数中使用,否则会出现:
此声明没有存储类或类型说明符
②imread读取图像,若只输入图片名及格式,则需将图片放至创建的对应cpp文件夹中
附上练习代码:
#include <opencv2/core.hpp>
#include <opencv2/highgui.hpp>
#include <iostream>
int main() {
cv::Mat image; //创建一个空图像
std::cout << " This image is " << image.rows << " x "
<< image.cols << std::endl;
//读取输入图像并转化为灰度图像,结果为this image is 图像的行x列
image = cv::imread("test.jpg",cv::IMREAD_GRAYSCALE);
//如果没有分配图像,empty 方法将返回 true
if (image.empty()) {
//未创建图像
//可能显示错误信息
//并退出程序
std::cout << "Error reading image..." << std::endl;
return 0;
}
std::cout << " This image is " << image.rows << " x "
<< image.cols << std::endl;
std::cout << "This image has "
<< image.channels() << "channel(s)" << std::endl;
//定义窗口
cv::namedWindow("Original image");
//显示图像
cv::imshow("Original image", image); //字符串名称,输出数组矩阵
cv::waitKey(0); //暂停显示,为了显示图像,官方文档中进行了说明,imshow后必须使用waitKey
cv::Mat result; // 建立一个新矩阵
cv::flip(image, result, 1); // 正数表示水平翻转
// 0 表示垂直翻转,
// 负数表示水平和垂直
cv::namedWindow("Output Image"); // 输出窗口
cv::imshow("Output Image", result);
cv::waitKey(0); // 0表示永久地等待按键
// 键入的正数表示等待的毫秒数
cv::imwrite("output.bmp", result); // 保存结果
}