图像处理之规则裁剪(Resize)
1 图像裁剪
在实际工作中,经常需要根据研究工作要求对图像进行裁剪(Subset Image),按照实际图像分幅裁剪的过程,可以将图像分幅裁剪分为两种类型:规则分幅裁剪(Rectangle Subset),不规则分幅裁剪(Pdygon Subset)。
规则分幅裁剪:裁剪图像的边界范围是一个矩形,通过左上角和右下角两点的坐标,就可以确定图像的裁剪位置,整个裁剪过程比较简单。
不规则分幅裁剪:裁剪图像的边界范围是任意多边形,无法通过左上角和右下角两点的坐标确定裁减位置,而必须事先生成一个完整的闭合多边形区域,可以是一个AOI多边形,也可以是ArcInfo的一个Polygon Coverage,针对不同的情况采用不同的裁剪过程。
2 源码实现(C语言)
由于不规则分幅裁剪比较复杂,在常规图像处理中并不常见,因此我们通常进行的是规则分幅裁剪,如下是利用C实现的图像规则裁剪,源码如下:
#include "stdafx.h"
#include "cv.h"
#include "highgui.h" int myCutOut(IplImage* src, IplImage* dst, int x, int y, int w, int h)
{
//x,y为矩形框左上角点坐标,w为宽度,h为高度
int width_src = src->widthStep;
int height_src = src->height;
byte* gray_src = (byte*)src -> imageData; int width_dst = dst ->widthStep;
int height_dst = dst ->height;
byte* gray_dst = (byte*)dst -> imageData; for (int i = ; i < height_dst; i++)
{
for (int j = ; j < width_dst; j++)
{
gray_dst[i * width_dst + j] = gray_src[(y + i) * width_src + x + j];
}
} return ;
} int _tmain(int argc, _TCHAR* argv[])
{
IplImage* Img_src = cvLoadImage("lena.bmp", -);
//目标大小为150x50
IplImage* Img_dst = cvCreateImage(cvSize(,),IPL_DEPTH_8U,Img_src->nChannels);
//起始点坐标为(250,250)
myCutOut(Img_src, Img_dst, , , Img_dst -> width, Img_dst -> height); cvShowImage("src", Img_src);
cvShowImage("cutout", Img_dst);
cvWaitKey(); return ;
}
仿真效果图如下:
输入图片:

输出图片:

图像处理之规则裁剪(Resize)的更多相关文章
- 简单二次封装的Golang图像处理库:图片裁剪
简单二次封装的Golang图像处理库:图片裁剪 一.功能 Go语言下的官方图像处理库 简单封装后对jpg和png图像进行缩放/裁剪的库 二.使用说明 1.首先下载 go get -v -u githu ...
- ENVI裁剪
一.basic tools-->resize data进行规则裁剪 虽然是进行图像重采样工具,但也可以用于简单快速的裁剪 1. 选中要裁剪的图像: 对话框下面选择spatial subset(构 ...
- 学习笔记TF015:加载图像、图像格式、图像操作、颜色
TensorFlow支持JPG.PNG图像格式,RGB.RGBA颜色空间.图像用与图像尺寸相同(height*width*chnanel)张量表示.通道表示为包含每个通道颜色数量标量秩1张量.图像所有 ...
- java绘图(基于Graphics2D)
1.绘图基本操作 请参考下面基础示例: int width = 200, height = 250; //创建图片对象 BufferedImage image = new BufferedImage( ...
- CSS3全览_动画+滤镜
CSS3全览_动画+滤镜 目录 CSS3全览_动画+滤镜 1. 列表和生成的内容 2. 变形 3. 过渡 4. 动画 5. 滤镜, 混合, 裁剪和遮罩 6. 针对特定媒体的样式 作者: https:/ ...
- 知乎上一个关于Android面试的问题答案
由于链接出错,这里附上原文链接:Touch Me 前段时间面试,自己以及小伙伴们简要的汇总的一些面试问题,可以对照的参考一下吧- 建议就是在面一家公司之前了解好这个公司的app是以什么为驱动的,例如电 ...
- 8.进行图片的裁剪,同时使用resize将图片的维度进行变化
1.img.crop((x1, y1, x2, y2)) 进行图片的裁剪 参数说明: x1, y1, x2, y2 表示图片的大小 2. img.resize((w, h)) # 进行图片的维度变化 ...
- 图像处理之OpenCV - 缩放/旋转/裁剪/加噪声/高斯模糊
Github地址 @ 缩放 void cv::resize ( InputArray src, OutputArray dst, Size dsize, , , int interpolation = ...
- python数字图像处理(3):图像像素的访问与裁剪
图片读入程序中后,是以numpy数组存在的.因此对numpy数组的一切功能,对图片也适用.对数组元素的访问,实际上就是对图片像素点的访问. 彩色图片访问方式为: img[i,j,c] i表示图片的行数 ...
随机推荐
- WPF编程 ,TextBlock 显示百分数值的一种简单方法。
原文:WPF编程 ,TextBlock 显示百分数值的一种简单方法. 版权声明:我不生产代码,我只是代码的搬运工. https://blog.csdn.net/qq_43307934/article/ ...
- 欧几里得算法(及扩展)&&快速幂(二分+位运算)
最近在二中苦逼地上课,天天听数论(当然听不懂) 但是,简单的还是懂一点的 1.欧几里得算法 说得这么高级干什么,gcd入门一个月的人都会吧,还需要BB? 证明可参照其他博客(不会),主要就是gcd(a ...
- mfc 友元类
知识点 继承类成员的访问级别 友元类 继承访问控制: 基类 派生类(能否访问) public private protected 派生类类 派生类对象 派生类 派生类对象 派生类类 派生类对象 pri ...
- AT24C02跨页写数据
AT24C02 EEPROM的写数据分为:字节写数据模式和页写数据模式:字节写就是一个地址一个数据的写,页写是连续写数据,一个地址多个数据的写,但是页写不能自动跨页,如果超出一页长度,超出的数据会覆盖 ...
- Python基础知识(Basic knowledge)
Python基础知识(Basic knowledge) 1.认识Python&基础环境搭建 2.Python基础(上) 3.Python基础(中) 4.Python基础(下) 5.Python ...
- markdown 笔记二
Markdown 语法笔记==============================1,头部欢迎# 欢迎使用flaskBlog ------ flask对于我来说,适合快速开发一些小网页,自己也想整 ...
- 调试OV2735总结
调试找到的问题: 1:开始调试的时候因为之前的工程师原理图和BOM出错,导致本来是2.8V电压的焊接的是1.8V的LDO所以这个是第一个问题 2:因为FAE反应说sensor没有反应I2C没有通信,所 ...
- 一款基于Zigbee技术的智慧鱼塘系统研究与设计
在现代鱼塘养鱼中,主要困扰渔农的就是养殖成本问题.而鱼塘养殖成本最高的就是养殖的人工费,喂养的饲料费和鱼塘中高达几千瓦增氧机的消耗的电费.实现鱼塘自动化养殖将会很好地解决上述问题,大大提高渔农的经济效 ...
- io整理
http://www.cnblogs.com/rollenholt/archive/2011/09/11/2173787.html
- 睡眠猴子——Alpha阶段项目总结
设想和目标 1. 我们的软件要解决什么问题?是否定义得很清楚?是否对典型用户和典型场景有清晰的描述? 针对广大失眠人群,尤其是程序猿用户的失眠问题.定义的清楚.描述过. 2. 是否有充足的时间来做计划 ...