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;
}
相关推荐
在等星星呐3 分钟前
人工智能从0基础到精通
前端·人工智能·python
A林玖3 分钟前
【 深度学习 】生成对抗网络 GAN
人工智能·深度学习
智驱力人工智能8 分钟前
仓库园区无人机烟雾识别:构建立体化、智能化的早期火灾预警体系 无人机烟雾检测 无人机动态烟雾分析AI系统 无人机辅助火灾救援系统
人工智能·opencv·算法·目标检测·架构·无人机·边缘计算
未来之窗软件服务8 分钟前
幽冥大陆(六十) SmolVLM 本地部署 轻量 AI 方案—东方仙盟筑基期
人工智能·本地部署·轻量模型·东方仙盟·东方仙盟自动化
今天也要学习吖10 分钟前
【开源客服系统推荐】AI-CS:一个开源的智能客服系统
人工智能·开源·客服系统·ai大模型·ai客服·开源客服系统
Christo313 分钟前
2022-《Deep Clustering: A Comprehensive Survey》
人工智能·算法·机器学习·数据挖掘
jqpwxt15 分钟前
启点创新智慧景区服务平台,智慧景区数字驾驶舱建设
大数据·人工智能
weisian15117 分钟前
入门篇--人工智能发展史-2-什么是深度学习,深度学习的前世今生?
人工智能·深度学习
阿里云大数据AI技术18 分钟前
Hologres Dynamic Table:高效增量刷新,构建实时统一数仓的核心利器
大数据·人工智能·阿里云·实时数仓·hologres