OpenCV 中mat 格式的像素数值都是连续排列的。为了深入了解cuda 编程。我们来写一个简单的小程序测试一下。
1 不裁剪
cpp
cv::Mat crop_image(int(height), int(width), CV_8UC3, image.data);
2 只保留图像1/3
cpp
cv::Mat crop_image(int(height/3), int(width), CV_8UC3, image.data);
3 每行错开一个像素
cpp
cv::Mat crop_image(int(height), int(width-1), CV_8UC3, image.data);
.
4 .全部代码
cpp
#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;
}