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

相关推荐
small_wh1te_coder几秒前
Anthropic技术总监级拆解大模型 第16讲:GPU 与 CUDA 大模型计算到底是怎么跑起来的?
人工智能
nap-joker1 分钟前
多维整合分析揭示了遗传结构、风险因素及脑部衰老的健康后果
人工智能·生物年龄·dense-net·人口统计学·生活方式·常见与罕见遗传变异
一只废狗狗狗狗狗狗狗狗狗14 分钟前
深度学习为什么好?
人工智能·深度学习
guslegend17 分钟前
工程地基、Provider 与 ReAct 循环:Agent 核心能力的设计、实现与验收
人工智能·agent·react·架构设计·spring ai
桃西西呀19 分钟前
Spring AI Alibaba 之九:我让 Agent 接着上一轮往下聊,它却只还给我一条消息,多轮记忆到底藏在哪
人工智能·spring·llm
10年前端老司机22 分钟前
一次业务迭代:聊聊知识库多版本可追溯审核流程怎么做
人工智能·后端·agent
呆萌很23 分钟前
长尾分类(Long-tailed Classification)方法汇总
人工智能·分类
for_ever_love__24 分钟前
LangChain Agentic RAG:让 Agent 自己决定要不要检索、检索几次
人工智能·golang·langchain·rag·langgraph·agentic·自适应检索
Fxrain24 分钟前
[Paper-Reading] CUAs 安全与隐私威胁综述
人工智能·安全·agent·智能体
乱世军军25 分钟前
安装最新版本
人工智能