ubuntu22.04@laptop OpenCV Get Started: 004_cropping_image

ubuntu22.04@laptop OpenCV Get Started: 004_cropping_image

  • [1. 源由](#1. 源由)
  • [2. Cropping应用Demo](#2. Cropping应用Demo)
  • [3 image_crop](#3 image_crop)
    • [3.1 C++应用Demo](#3.1 C++应用Demo)
    • [3.2 Python应用Demo](#3.2 Python应用Demo)
    • [3.3 重点过程分析](#3.3 重点过程分析)
      • [3.3.1 裁剪图像](#3.3.1 裁剪图像)
      • [3.3.2 描绘矩形](#3.3.2 描绘矩形)
  • [4. 总结](#4. 总结)
  • [5. 参考资料](#5. 参考资料)

1. 源由

使用OpenCV进行裁剪相当于对NumPy数组做类似切片的动作。

每个图像都存储在2D阵列中,区域的高度和宽度(以像素为单位)就是一张对应的图片。

2. Cropping应用Demo

004_cropping_image是OpenCV调整图像比例的示例程序。

确认OpenCV安装路径:

复制代码
$ find /home/daniel/ -name "OpenCVConfig.cmake"
/home/daniel/OpenCV/installation/opencv-4.9.0/lib/cmake/opencv4/
/home/daniel/OpenCV/opencv/build/OpenCVConfig.cmake
/home/daniel/OpenCV/opencv/build/unix-install/OpenCVConfig.cmake


$ export OpenCV_DIR=/home/daniel/OpenCV/installation/opencv-4.9.0/lib/cmake/opencv4/

3 image_crop

3.1 C++应用Demo

C++应用Demo工程结构:

复制代码
004_cropping_image/CPP$ tree .
.
├── CMakeLists.txt
├── image_crop.cpp
├── Patching
│   ├── saved_patches
│   ├── CMakeLists.txt
│   ├── patching.cpp
│   └── test_cropped.jpg
└── test.jpg

2 directories, 6 files

C++应用Demo工程编译执行:

复制代码
$ mkdir build
$ cd build
$ cmake ..
$ cmake --build . --config Release
$ cd ..
$ ./build/image_crop

$ cd Patching
$ mkdir build
$ cd build
$ cmake ..
$ cmake --build . --config Release
$ cd ..
$ ./build/image_patch

3.2 Python应用Demo

Python应用Demo工程结构:

复制代码
004_cropping_image/Python$ tree .
.
├── saved_patches
├── image_crop.py
├── patching.py
├── requirements.txt
├── test_cropped.jpg
└── test.jpg

1 directory, 5 files

Python应用Demo工程执行:

复制代码
$ workoncv-4.9.0
$ python image_crop.py
$ python patching.py

3.3 重点过程分析

3.3.1 裁剪图像

  • img(Range(start_row, end_row), Range(start_col, end_col))
  • cropped = img[start_row:end_row, start_col:end_col]

第一个参数:行 (高度, 自上而下递增)

第二个参数:列 (宽度, 自左往右递增)

C++:

复制代码
// Crop image
// First Range(20,500) is for y coordinates and the second is for x respectively
Mat cropped_image = img(Range(80,280), Range(150,330));

Python:

复制代码
# Cropping an image
cropped_image = img[80:280, 150:330]

3.3.2 描绘矩形

C++:

复制代码
rectangle(img, Point(x,y), Point(x1,y1), Scalar(0,255,0), 1);  

Python:

复制代码
cv2.rectangle(img, (x, y), (x1, y1), (0, 255, 0), 1)

4. 总结

通过对NumPy二维数组操作,对图像进行剪裁,使用rectangle函数进行矩形框的绘制。

5. 参考资料

【1】ubuntu22.04@laptop OpenCV Get Started

【2】ubuntu22.04@laptop OpenCV安装

【3】ubuntu22.04@laptop OpenCV定制化安装

相关推荐
FreeCode5 小时前
LangChain1.0智能体开发:结构化输出
人工智能·langchain·agent
私域实战笔记5 小时前
企业微信SCRM怎么选?工具适配与落地实操指南
人工智能·数据挖掘·企业微信·scrm·企业微信scrm
私域实战笔记5 小时前
企业微信SCRM工具该如何选择?从需求匹配出发的筛选思路
大数据·人工智能·企业微信·scrm·企业微信scrm
微盛企微增长小知识5 小时前
SCRM工具测评:助力企业微信私域运营的核心功能解析
大数据·人工智能·企业微信
wrangler_csdn5 小时前
如何一键将 PDF 转为 Word?
人工智能·安全·ai
#卢松松#5 小时前
这是我们在企业微信上和松松云后台对接的一个功能
人工智能·创业创新
城市直通车6 小时前
聚焦新质生产力:火山引擎豆包大模型落地峰会赋能杭州数字经济
人工智能·火山引擎
TG:@yunlaoda360 云老大6 小时前
火山引擎升级AI云原生套件:AgentKit、ServingKit、TrainingKit全链路加速AI应用落地
人工智能·云原生·火山引擎
恒点虚拟仿真6 小时前
AI+XR赋能智慧研创中心:打破职业教育实训困境,推动产教深度融合
人工智能·虚拟仿真·产教融合·职业教育·虚拟仿真实训·ai+xr·智慧研创中心
字节数据平台6 小时前
极氪与火山引擎深化合作,Data Agent赋能车辆数据管理效率
人工智能·火山引擎