iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C++如何实现图像目标区裁剪ImageCropping
  • 276
分享到

C++如何实现图像目标区裁剪ImageCropping

2023-07-02 09:07:21 276人浏览 安东尼
摘要

这篇“c++如何实现图像目标区裁剪ImageCropping”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C++如何实现图像

这篇“c++如何实现图像目标区裁剪ImageCropping”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C++如何实现图像目标区裁剪ImageCropping”文章吧。

场景需求

在做图像处理时,有时候会需要适当地进行一些裁剪工作,比如我做干涉测量领域,我们所要处理的图像区域是条纹所在区域,而原图又远大于我所想分析的目标区,此时就需要对图像进行裁剪,这样做的好处:

1)缩减计算量,提高程序运行速度;

2)裁剪后的图像尺寸正好是归一化的图像尺寸,如果有归一化的需求,可以直接用裁剪图像尺寸建立归一化数据网格图。

我就是为了计算柱面的拟合系数才写了这个函数,若要得到同光学领域标准一致的系数,需要先归一化数据,而归一化的范围就正好是裁剪的图像大小。

函数通俗易懂,就是用掩膜定目标区,再分析掩膜在原图中的上下左右边界,用roi提取出来即可。

话不多说,下方为具体实现函数和测试代码。

功能函数代码

cv::Mat ImageCropping(const cv::Mat &phase) {// 非测量区一般都进行了NaN处理,所以掩膜绘制只需要判断是否为NaN值即可cv::Mat mask = cv::Mat::zeros(phase.size(), CV_8UC1);mask.setTo(255, phase == phase);int roi_up = 10000;int roi_down = 0;int roi_left = 10000;int roi_right = 0;int row = phase.rows;int col = phase.cols;for (int i = 0; i < row; i++){uchar *m = mask.ptr<uchar>(i);for (int j = 0; j < col; j++){if (m[j] != 0){if (j < roi_left)roi_left = j;if (j > roi_right)roi_right = j;if (i < roi_up)roi_up = i;if (i > roi_down)roi_down = i;}}}int w = roi_right - roi_left;int h = roi_down - roi_up;// 一般提取奇数尺寸,方便计算if (w % 2 == 0)w++;if (h % 2 == 0)h++;cv::Mat crop_phase = phase(cv::Rect(roi_left, roi_up, w, h)).clone();return crop_phase;}

C++测试代码

#include<iOStream>#include<OpenCV2/opencv.hpp>#include<ctime>using namespace std;using namespace cv;cv::Mat ImageCropping(const cv::Mat &phase);int main(void){cv::Mat phase(100, 100, CV_32FC1, nan(""));cv::circle(phase, cv::Point(50, 50), 30, 255, -1);cv::Mat crop = ImageCropping(phase);imshow("original", phase);imshow("result", crop);waiTKEy(0);system("pause");return 0;}cv::Mat ImageCropping(const cv::Mat &phase) {// 非测量区一般都进行了NaN处理,所以掩膜绘制只需要判断是否为NaN值即可cv::Mat mask = cv::Mat::zeros(phase.size(), CV_8UC1);mask.setTo(255, phase == phase);int roi_up = 10000;int roi_down = 0;int roi_left = 10000;int roi_right = 0;int row = phase.rows;int col = phase.cols;for (int i = 0; i < row; i++){uchar *m = mask.ptr<uchar>(i);for (int j = 0; j < col; j++){if (m[j] != 0){if (j < roi_left)roi_left = j;if (j > roi_right)roi_right = j;if (i < roi_up)roi_up = i;if (i > roi_down)roi_down = i;}}}int w = roi_right - roi_left;int h = roi_down - roi_up;// 一般提取奇数尺寸,方便计算if (w % 2 == 0)w++;if (h % 2 == 0)h++;cv::Mat crop_phase = phase(cv::Rect(roi_left, roi_up, w, h)).clone();return crop_phase;}

测试效果     

C++如何实现图像目标区裁剪ImageCropping

图1 裁剪前后对比图

在测试案例中,随机生成了一个100*100的数据矩阵,中间一个30半径的圆,也是我需要的目标区域,运用ImageCropping函数实现了目标区域的提取。

以上就是关于“C++如何实现图像目标区裁剪ImageCropping”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注编程网其他教程频道。

--结束END--

本文标题: C++如何实现图像目标区裁剪ImageCropping

本文链接: https://www.lsjlt.com/news/340629.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C++实现图像目标区裁剪ImageCropping
    目录场景需求功能函数代码C++测试代码测试效果     场景需求 在做图像处理时,有时候会需要适当地进行一些裁剪工作,比如我做干涉测量领域,我们所要处理...
    99+
    2024-04-02
  • C++如何实现图像目标区裁剪ImageCropping
    这篇“C++如何实现图像目标区裁剪ImageCropping”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C++如何实现图像...
    99+
    2023-07-02
  • python opencv怎么实现目标区域裁剪功能
    这篇文章主要讲解了“python opencv怎么实现目标区域裁剪功能”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“python opencv怎么实现目标区域裁剪功能”吧!这个任务是自己在项...
    99+
    2023-06-20
  • 怎么用python opencv实现目标区域裁剪功能
    这篇文章主要介绍“怎么用python opencv实现目标区域裁剪功能”,在日常操作中,相信很多人在怎么用python opencv实现目标区域裁剪功能问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么用py...
    99+
    2023-06-20
  • Angular如何实现图片裁剪工具ngImgCrop
    小编给大家分享一下Angular如何实现图片裁剪工具ngImgCrop,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!ngImgCrop是AngularJS的一个图片裁剪插件,它实际上是一个...
    99+
    2024-04-02
  • 如何用Vue实现图片裁剪组件
    这篇文章主要介绍“如何用Vue实现图片裁剪组件”,在日常操作中,相信很多人在如何用Vue实现图片裁剪组件问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何用Vue实现图片裁剪组件”的疑惑有所帮助!接下来,请跟...
    99+
    2023-06-20
  • vue项目实现添加图片裁剪组件
    本文实例为大家分享了vue项目添加图片裁剪组件的具体代码,供大家参考,具体内容如下 功能如下图所示: 1、安装命令如下 npm i vue-cropper --save 2、调用组...
    99+
    2024-04-02
  • Android实现手势划定区域裁剪图片
    本文实例为大家分享了Android实现手势划定区域裁剪图片的具体代码,供大家参考,具体内容如下 需求: 拍照,然后对图片进行处理,划定矩形区域,将矩形区域裁剪下来 思路: 1、使用系...
    99+
    2024-04-02
  • Android如何实现拍照及图片裁剪
    这篇文章主要介绍Android如何实现拍照及图片裁剪,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!最近做项目中涉及到了图片相关功能 ,在使用安卓6.0手机及7.1手机拍照时,遇到了因权限及文件管理导致程序崩溃等问题。...
    99+
    2023-05-30
    android6.0
  • python图像填充与裁剪/resize的实现代码
    目录前言代码resize前言 有时候我们需要把图片填充成某个数字的整数倍才能送进模型。例如,有些模型下采样倍率是8倍,或者16倍,那么输入的长和高就分别应该是8或16的整数倍。如果图...
    99+
    2024-04-02
  • 基于JavaScript如何实现图片裁剪功能
    本篇内容介绍了“基于JavaScript如何实现图片裁剪功能”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、图片文件的上传和读取使用文件上...
    99+
    2023-07-05
  • Python如何实现视频裁剪
    小编给大家分享一下Python如何实现视频裁剪,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!环境依赖本文主要使用到的不是ffmpeg,而是ffprobe也在上面这...
    99+
    2023-06-28
  • JavaScript如何实现小程序图片裁剪功能
    这篇文章主要介绍“JavaScript如何实现小程序图片裁剪功能”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“JavaScript如何实现小程序图片裁剪功能”文章能帮助大家解决问题。图片上传与处理要...
    99+
    2023-07-05
  • Cropper.js入门之在HTML中实现交互式图像裁剪
    目录简单介绍:安装方法:npm引入:cdn引入:简单入门简单介绍: Cropper.js是一个基于JavaScript的图像裁剪库,用于在网页或应用程序中实现灵活和交互式的图像裁剪功...
    99+
    2023-05-19
    Cropper.js HTML交互式图像裁剪 Cropper.js HTML交互
  • 微信小程序如何实现图片选择区域裁剪功能
    这篇文章主要为大家展示了“微信小程序如何实现图片选择区域裁剪功能”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“微信小程序如何实现图片选择区域裁剪功能”这篇文章吧...
    99+
    2024-04-02
  • Android怎么实现手势划定区域裁剪图片
    这篇文章主要介绍“Android怎么实现手势划定区域裁剪图片”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Android怎么实现手势划定区域裁剪图片”文章能帮助大家解决问题。需求:拍照,然后对图片进...
    99+
    2023-06-30
  • vue项目中如何使用vue-cropper做图片裁剪
    这篇文章主要介绍了vue项目中如何使用vue-cropper做图片裁剪的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇vue项目中如何使用vue-cropper做图片裁剪文章都会有所收获,下面我们一起来看看吧。一...
    99+
    2023-07-04
  • 微信小程序如何实现裁剪图片大小
    这篇文章主要介绍“微信小程序如何实现裁剪图片大小”,在日常操作中,相信很多人在微信小程序如何实现裁剪图片大小问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”微信小程序如何实现裁剪图片大小”的疑惑有所帮助!接下来...
    99+
    2023-06-30
  • Android如何实现裁剪照片功能
    这篇文章主要介绍Android如何实现裁剪照片功能,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!   从相册选择照片进行裁剪从相册选择照片并裁剪:private void cropFromGallery()...
    99+
    2023-06-29
  • 如何使用Python实现图片自定义裁剪小工具
    这篇文章主要介绍了如何使用Python实现图片自定义裁剪小工具,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。环境依赖ffmpy安装:pip install ...
    99+
    2023-06-28
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作