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定制化安装

相关推荐
Jamence几秒前
多模态大语言模型arxiv论文略读(155)
论文阅读·人工智能·计算机视觉·语言模型·论文笔记
Fairy要carry3 分钟前
书生大模型实战营——1. 大语言模型原理与书生大模型提示词工程实践
人工智能·语言模型·自然语言处理
mit6.8245 分钟前
[Backlog] 核心协调器 | 终端用户界面(TUI)实现 | 多分支任务冲突解决 | 测试验证体系
人工智能·算法
慕婉030712 分钟前
深度学习中的常见损失函数详解及PyTorch实现
人工智能·pytorch·深度学习
神经星星19 分钟前
在线教程丨一句话精准P图,FLUX.1 Kontext可实现图像编辑/风格迁移/文本编辑/角色一致性编辑
人工智能·深度学习·机器学习
UQI-LIUWJ26 分钟前
论文略读:Prefix-Tuning: Optimizing Continuous Prompts for Generation
人工智能·深度学习
机器之心44 分钟前
是的,LeCun要向28岁的Alexandr Wang汇报!这是Meta新AI团队的一些独家内部消息
人工智能
189228048611 小时前
NW710NW713美光固态闪存NW719NW720
大数据·服务器·网络·人工智能·科技
azoo1 小时前
Canny边缘检测(cv2.Canny())
人工智能·opencv·计算机视觉
向哆哆1 小时前
YOLO在自动驾驶交通标志识别中的应用与优化【附代码】
人工智能·深度学习·yolo·自动驾驶·yolov8