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

相关推荐
狂师2 分钟前
想做测试工具却不会写代码?怎么办?
人工智能·程序员·测试
xiangzhihong89 分钟前
零基础学AI之机器学习原理
人工智能·机器学习·机器人
Aision_10 分钟前
实习手记 Day:从 ELK 到 Agent 的“最后一公里”——告警消费与上下文富化
运维·人工智能·web安全·elk·网络安全·安全威胁分析
workbuddy小能手10 分钟前
用 WorkBuddy 调混元 Hy3 做批量文档摘要:一个可运行的实战示例
人工智能·workbuddy
梦想的旅途213 分钟前
企微私域 AI 创作:文案生成与 AI 配图自动化发布实战
人工智能·自动化·企业微信
Bruce_Liuxiaowei15 分钟前
多模态AI在网络安全监控中的创新应用
人工智能·安全·web安全
java修仙传22 分钟前
从网页禅道到 AI 能调用的工具:我的禅道 MCP 实现思路分享
java·人工智能·python·ai应用·mcp开发
乌恩大侠23 分钟前
图解 AI-RAN开发需要哪些软硬件:O-RU、DGX Spark、Sionna与Aerial
人工智能·spark·o-ru·ai-ran
中电金信26 分钟前
中电金信 :一站式企业智能体柔性生产全链路解决方案
大数据·人工智能