OpenCV通过指针裁剪图像

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;
}
相关推荐
不惑_43 分钟前
【征文计划】AI+AR生态新未来,Rokid核心技术实战解析
人工智能·机器学习
小关会打代码1 小时前
深度学习之YOLO系列了解基本知识
人工智能·深度学习·yolo
振鹏Dong3 小时前
依托 <AI 原生应用架构白皮书>,看 AI 原生应用的发展与实践
人工智能
智行众维4 小时前
自动驾驶的“虚拟驾校”如何炼成?
人工智能·自动驾驶·汽车·智能驾驶·智能网联汽车·智能驾驶仿真测试·智驾系统
空白到白4 小时前
NLP-注意力机制
人工智能·自然语言处理
大千AI助手6 小时前
指数分布:从理论到机器学习应用
人工智能·机器学习·参数估计·概率密度函数·mle·指数分布·累积分布函数
MATLAB代码顾问6 小时前
MATLAB绘制多种混沌系统
人工智能·算法·matlab
搬砖的小码农_Sky6 小时前
人形机器人:Tesla Optimus的AI集成细节
人工智能·ai·机器人
做运维的阿瑞6 小时前
2025 年度国产大模型「开源 vs. 闭源」深度评测与实战指南
人工智能·低代码·开源
渡我白衣6 小时前
深度学习入门(三)——优化算法与实战技巧
人工智能·深度学习