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多Agent协作实战派10 小时前
AI多Agent协作系统实战(四十):AI说“没有错误“,系统判了“测试失败“——一个正则的误判
数据库·人工智能
airobotcn10 小时前
智能巡检平台容器化部署:Docker+K8s在工业边缘的实践
人工智能·docker·容器·kubernetes·机器人·自动化
weixin_4462608510 小时前
Vero基准:AI智能体能否构建形式化验证软件仓库
人工智能
hiahiahia12310 小时前
AI Web 项目的文件到底应该怎么放?
前端·人工智能
AIyy86610 小时前
PPT找不到合适配图?输入文字描述直接AI生成,2026AI绘图工具怎么选
人工智能
xiongmaogeo10 小时前
外贸企业如何利用GEO优化,抢占海外AI平台的搜索流量
人工智能·chatgpt·facebook
大模型搬砖师10 小时前
高校科研管理上 AI:科研处、课题组、信息中心的三方分歧怎么调和
人工智能·安全
小沈同学呀11 小时前
【Agent开发第五期】Tool Use 工具调用,给 Agent 装上“手“
人工智能·工具调用·functioncalling·agent开发·tooluse·从零开发ai助手
tianxuanjg11 小时前
机器人精密零件:为何样品合格,批量却频频超差?
人工智能·经验分享·机器人·无人机·制造·材质