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;
}
相关推荐
福客AI智能客服15 分钟前
电商AI客服:自动客服机器人如何成为企业效率提升的关键
人工智能·机器人
Data-Miner22 分钟前
46页精品PPT | AI智能中台企业架构设计_重新定义制造
人工智能·制造
木斯佳22 分钟前
前端八股文面经大全:腾讯前端暑期AI面(2026-03-26)·面经深度解析
前端·人工智能·ai·智能体·暑期实习
Chockong27 分钟前
01_CNN界的hello world
人工智能·神经网络·cnn
AI茶水间管理员28 分钟前
谁在掌控大模型的创造力开关?Temperature & Top-p
人工智能·后端
俊哥V29 分钟前
每日 AI 研究简报 · 2026-03-26
人工智能·ai
小陈同学呦31 分钟前
从“前后端分离”到“超级个体”:AI编码时代的一点感想
人工智能·ai编程
健康人猿1 小时前
SuperGrok Lite 是啥?值不值得升级?与旗舰版的差距有多大?
人工智能·学习·ai
Test-Sunny1 小时前
【ai项目汇总】实战ai项目
人工智能·ai项目
高洁011 小时前
问题三:GraphRAG的研究现状、实例演示
人工智能·深度学习·信息可视化·数据挖掘·知识图谱