OpenCV 中mat 格式的像素数值都是连续排列的。为了深入了解cuda 编程。我们来写一个简单的小程序测试一下。
1 不裁剪
cv::Mat crop_image(int(height), int(width), CV_8UC3, image.data);
2 只保留图像1/3
cv::Mat crop_image(int(height/3), int(width), CV_8UC3, image.data);
3 每行错开一个像素
cv::Mat crop_image(int(height), int(width-1), CV_8UC3, image.data);
.
4 .全部代码
#include <opencv2/opencv.hpp> // 包含OpenCV的主要头文件
#include <iostream>
#include <direct.h>
int main()
{cv::Mat image; // 创建一个Mat对象来存储图像char runPath[1024] = { 0 };image = cv::imread("mountain.png", cv::IMREAD_COLOR); // 读取图片if (image.empty()) { // 检查图片是否成功加载std::cout << "Could not open or find the image\n";return -1;}cv::namedWindow("src_image", cv::WINDOW_AUTOSIZE); // 创建一个窗口std::cout <<"image size: "<< image.size() << std::endl;int width = image.cols;int height = image.rows;std::cout << "x: " << image.cols << std::endl;std::cout <<"y: "<< image.rows << std::endl;cv::Mat crop_image(int(height/3), int(width), CV_8UC3, image.data);cv::imshow("src_image", image); // 在窗口中显示图片cv::waitKey(0); // 等待按键事件,0表示无限期等待 cv::imshow("crop", crop_image); // 在窗口中显示图片cv::waitKey(0); // 等待按键事件,0表示无限期等待 _getcwd(runPath, sizeof(runPath));std::cout<<"running path" << runPath << std::endl;return 0;
}