/*
* =====================================================================================
*
* Filename: resize.cpp
* Environment:
* Description: 图像list为参数输入程序,resize后的图像在picture_resize下
*
*
* Version: 1.0
* Created: 2013/10/15 12:23:51
* Author: yuliyang
I*
* Mail: wzyuliyang911@gmail.com
* Blog: http://www.cnblogs.com/yuliyang
*
* =====================================================================================
*/ #include "opencv\cv.h"
#include "opencv\highgui.h"
#include <math.h>
#include "windows.h"
#include "fstream"
#include <cstdlib>
#include <string.h>
using namespace std;
static int n=;
static char savename_resize[];
int main(int argc, char* argv[])
{ /*-----------------------------------------------------------------------------
* 创建目标目录,保存resize图像
* DOS命令
*-----------------------------------------------------------------------------*/
system("md .\\picture_resize");
IplImage *src = ; //源图像指针
IplImage *dst = ; //目标图像指针
CvSize dst_cvsize; //目标图像尺寸
dst_cvsize.width=;
dst_cvsize.height=;
string buf;
ifstream svm_data(argv[]);//训练样本图片的路径都写在这个txt文件中,使用bat批处理文件可以得到这个txt文件
while (svm_data)
{
if (getline(svm_data,buf))
{ printf("processing %s...\n",buf.c_str());
src = cvLoadImage(buf.c_str());
dst = cvCreateImage( dst_cvsize, src->depth, src->nChannels); //构造目标图象
cvResize(src, dst, CV_INTER_LINEAR); //缩放源图像到目标图像
sprintf(savename_resize,".//picture_resize//resize%03dr.bmp",n);
cvSaveImage(savename_resize,dst);
n++;
cvReleaseImage(&src); //释放源图像占用的内存
cvReleaseImage(&dst); //释放目标图像占用的内存
}
} svm_data.close(); /*-----------------------------------------------------------------------------
* bat批处理:
*
* 在num.txt文件中的偶数行插入数字0,分类器的label
*
setlocal enabledelayedexpansion
for /f "delims= " %%a in (num.txt) do (
set /a line =0
echo %%a >>0.txt
echo !line! >>0.txt
) 将目录下的所以文件名写入num.txt文件里
dir /b/s/p/w *.bmp > num.txt 将所有0.txt - 9.txt内的内容全部写入到hb.txt
@echo off
set d=d:\nums
pushd %d%
del hb.tmp 2>nul
for /f "tokens=*" %%i in ('dir/b/s *.txt') do type "%%i">>hb.txt
ren hb.tmp hb.txt
popd *
*-----------------------------------------------------------------------------*/ /* the first command line parameter must be image file name */
// src = cvLoadImage(argv[1]);
// dst_cvsize.width = src->width * scale; //目标图像的宽为源图象宽的scale倍
// dst_cvsize.height = src->height * scale; //目标图像的高为源图象高的scale倍
// return ;
}
 /*
* =====================================================================================
*
* Filename: select2save.cpp
* Description: 获取感兴趣的选区,自动创建目录和resize大小
* 环境:opencv2.4.4和vs2010
*
*
* Version: 2
* Created: 2013/10/14 19:52:09
* Author: yuliyang
* Weibo: @礼杨_HDU
* Mail: wzyuliyang911@gmail.com
* Blog: http://www.cnblogs.com/yuliyang
*
* =====================================================================================
*/
#include "opencv\cv.h"
/*-----------------------------------------------------------------------------
* 很奇怪的的是cvresize()在这个头文件里,加了它才有定义,否则编译会说函数未定义
*-----------------------------------------------------------------------------*/
#include "opencv\highgui.h"
#include "opencv2/core/core.hpp"
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include <stdio.h>
#include <math.h>
using namespace cv; IplImage* org = ;
IplImage* img = ;
IplImage* tmp = ;
IplImage* dst = ;
IplImage* dst_resize = ;
static int n=;
static char savename[];
static char savename_resize[];
void on_mouse( int event, int x, int y, int flags, void* ustc)
{
static CvPoint pre_pt = {-,-};
static CvPoint cur_pt = {-,-};
CvFont font;
cvInitFont(&font, CV_FONT_HERSHEY_SIMPLEX, 0.5, 0.5, , , CV_AA);
char temp[];
char lenth_and_height[]; if( event == CV_EVENT_LBUTTONDOWN )
{
cvCopy(org,img);
sprintf(temp,"(%d,%d)",x,y);
pre_pt = cvPoint(x,y);
cvPutText(img,temp, pre_pt, &font, cvScalar(,, , ));
cvCircle( img, pre_pt, ,cvScalar(,,,) ,CV_FILLED, CV_AA, );
cvShowImage( "img", img );
cvCopy(img,tmp);
}
else if( event == CV_EVENT_MOUSEMOVE && !(flags & CV_EVENT_FLAG_LBUTTON))
{
cvCopy(tmp,img);
sprintf(temp,"(%d,%d)",x,y);
cur_pt = cvPoint(x,y);
cvPutText(img,temp, cur_pt, &font, cvScalar(,, , ));
cvShowImage( "img", img );
}
else if( event == CV_EVENT_MOUSEMOVE && (flags & CV_EVENT_FLAG_LBUTTON))
{
cvCopy(tmp,img);
sprintf(temp,"(%d,%d)",x,y);
cur_pt = cvPoint(x,y);
cvPutText(img,temp, cur_pt, &font, cvScalar(,, , ));
cvRectangle(img, pre_pt, cur_pt, cvScalar(,,,), , , );
sprintf(lenth_and_height,"(Width:%d,Height:%d)",abs(cur_pt.x-pre_pt.x),abs(cur_pt.y-pre_pt.y));
/*-----------------------------------------------------------------------------
*
*
* 为了方便随时查看自己选区的宽度和高度,特意加了一个点,该点计算为取矩形窗左上点和右下点的中点
*
*
*-----------------------------------------------------------------------------*/
CvPoint origin;
origin.x=(pre_pt.x+cur_pt.x)/;
origin.y=(pre_pt.y+cur_pt.y)/;
cvPutText(img,lenth_and_height, origin, &font, cvScalar(,, , ));
cvShowImage( "img", img );
}
else if( event == CV_EVENT_LBUTTONUP )
{
cvCopy(tmp,img);
sprintf(temp,"(%d,%d)",x,y);
cur_pt = cvPoint(x,y);
cvPutText(img,temp, cur_pt, &font, cvScalar(,, , ));
cvCircle( img, cur_pt, ,cvScalar(,,,) ,CV_FILLED, CV_AA, );
cvRectangle( img, pre_pt, cur_pt, cvScalar(,,,), , , );
cvShowImage( "img", img );
cvCopy(img,tmp);
int width=abs(pre_pt.x-cur_pt.x);
int height=abs(pre_pt.y-cur_pt.y);
if(width== || height==)
{
cvDestroyWindow("dst");
return;
}
dst=cvCreateImage(cvSize(width,height),org->depth,org->nChannels);
CvRect rect;
if(pre_pt.x<cur_pt.x && pre_pt.y<cur_pt.y)
{
rect=cvRect(pre_pt.x,pre_pt.y,width,height);
}
else if(pre_pt.x>cur_pt.x && pre_pt.y<cur_pt.y)
{
rect=cvRect(cur_pt.x,pre_pt.y,width,height);
}
else if(pre_pt.x>cur_pt.x && pre_pt.y>cur_pt.y)
{
rect=cvRect(cur_pt.x,cur_pt.y,width,height);
}
else if(pre_pt.x<cur_pt.x && pre_pt.y>cur_pt.y)
{
rect=cvRect(pre_pt.x,cur_pt.y,width,height);
}
cvSetImageROI(org,rect);
cvCopy(org,dst); /*-----------------------------------------------------------------------------
* 定义保存图像的大小
*-----------------------------------------------------------------------------*/
CvSize dst_cvsize;
dst_cvsize.width=;
dst_cvsize.height=;
dst_resize = cvCreateImage( dst_cvsize, org->depth, org->nChannels);
cvResize(org, dst_resize, CV_INTER_LINEAR); cvResetImageROI(org);
cvDestroyWindow("dst");
//cvNamedWindow("dst",1);
//cvShowImage("dst",dst); /*-----------------------------------------------------------------------------
* 保存未resize的图像
*-----------------------------------------------------------------------------*/
sprintf(savename,".\\picture\\save%03d.bmp",n);
/*-----------------------------------------------------------------------------
* 保存在resize文件夹下
*-----------------------------------------------------------------------------*/
sprintf(savename_resize,".\\picture_resize\\save%03dr.bmp",n); cvSaveImage(savename,dst);
cvSaveImage(savename_resize,dst_resize);
n++;
}
}
int main(int argc, char *argv[])
{ /*-----------------------------------------------------------------------------
* 用DOS命令创建文件夹,用于分类resize和未resize的原图像
*-----------------------------------------------------------------------------*/
system("md .\\picture_resize");
system("md .\\picture");
org=cvLoadImage(argv[],);
img=cvCloneImage(org);
tmp=cvCloneImage(org);
cvNamedWindow("img",);
cvSetMouseCallback( "img", on_mouse, ); cvShowImage("img",img);
cvWaitKey();
cvDestroyAllWindows();
cvReleaseImage(&org);
cvReleaseImage(&img);
cvReleaseImage(&tmp);
cvReleaseImage(&dst);
return ;
}

opencv保存选择图像中的区域(二)的更多相关文章

  1. opencv保存选择图像中的区域

    在自己建立行人检测的图像库时用到,参考别人的修改了一下: #include "opencv2/core/core.hpp" #include "opencv2/highg ...

  2. Halcon学习之六:获取Image图像中Region区域的特征参数

    area_center_gray ( Regions, Image : : : Area, Row, Column )    计算Image图像中Region区域的面积Area和重心(Row,Colu ...

  3. 【OpenCV】访问图像中每个像素的值

    http://blog.csdn.net/xiaowei_cqu/article/details/7557063

  4. 【opencv学习笔记六】图像的ROI区域选择与复制

    图像的数据量还是比较大的,对整张图片进行处理会影响我们的处理效率,因此常常只对图像中我们需要的部分进行处理,也就是感兴趣区域ROI.今天我们来看一下如何设置图像的感兴趣区域ROI.以及对ROI区域图像 ...

  5. (转)使用Python和OpenCV检测图像中的物体并将物体裁剪下来

    原文链接:https://blog.csdn.net/liqiancao/article/details/55670749 介绍 硕士阶段的毕设是关于昆虫图像分类的,代码写到一半,上周五导师又给我新的 ...

  6. 深入学习OpenCV检测及分割图像的目标区域

    准备1:OpenCV常用图片转换技巧 在进行计算机视觉模型训练前,我们经常会用到图像增强的技巧来获取更多的样本,但是有些深度学习框架中的方法对图像的变换方式可能并不满足我们的需求,所以掌握OpenCV ...

  7. 图像的ROI区域选择与复制

    [opencv学习笔记六]图像的ROI区域选择与复制 孜然   7 人赞同了该文章 图像的数据量还是比较大的,对整张图片进行处理会影响我们的处理效率,因此常常只对图像中我们需要的部分进行处理,也就是感 ...

  8. C#使用OpenCV剪切图像中的圆形和矩形

    前言 本文主要介绍如何使用OpenCV剪切图像中的圆形和矩形. 准备工作 首先创建一个Wpf项目--WpfOpenCV,这里版本使用Framework4.7.2. 然后使用Nuget搜索[Emgu.C ...

  9. matlab中如何将视频保存成图像

    利用MATLAB将视频的每一帧保存成一幅图像,并自动命名.本文方法简单,容易学习. 首先,读入视频.代码如下: mov = VideoReader('xxxxxx.avi'); % 将xxxxxx.a ...

随机推荐

  1. winFrom窗体样式

    ControlBox窗口样式:确定窗体是否有"控件/系统"菜单框. 设置为隐藏 False AutoSizeMode  GrowAndShrink 指定用户界面元素自动调整自身大小 ...

  2. CheckedListBox与CheckedListBox联动

    包括保存和加载 //查找业务类型 DataTable dtyewu = sb.SelectSyscode(0, true); if (dtyewu.Rows.Count > 0) { flagc ...

  3. 1. Window环境下 - 开发环境的配置: (安装Android Studio 2.1)

    0. Java简介: 1990年Sun公司预料嵌入式系统将在未来家用电器领域大显生手, 于是成立了一个由James Gosling领导的"Green计划"(首席科学家Bill Jo ...

  4. FolderBrowserDialog(文件夹浏览对话框)

    1.选择数据库目录,在此处不需要新建文件夹,因此屏蔽新建文件夹按钮. C#代码 FolderBrowserDialog df = new FolderBrowserDialog(); //设置文件浏览 ...

  5. RHEL 6.1字符界面无法登录SSH却能登录

    1.具体版本: 2.具体现象: 每次输入用户名密码登录之后又跳到这个界面.但是用ssh却可以登录. 3.查看日志 [root@localhost ~]# tail -f /var/log/secure ...

  6. C#基础|初探反射

    什么是反射 我们编写的C#代码都可以编译成exe文件或dll文件.暂时先把他们叫做程序集吧,程序集中包含了很多信息.你写了一个类,类中会有字段,有属性,有方法,编译是会把这些信息保存在程序集中,暂时把 ...

  7. Android版:验证手机号码的正则表达式

    http://blog.csdn.net/dai_zhenliang/article/details/8186249 /** * 验证手机格式 */ public static boolean isM ...

  8. asp.net将数据库中的数据赋给DropDownList

    当你选定一项进行其他操作时会重新绑定dropdownlist,这样会重新回到第一项,在page_load里加上判断if(!IsPostBack){'这里是你需要绑定dropdownlist的代码'}. ...

  9. Android USB Host与HID通讯 (二)

    不好意思,从上一篇到现在确实比较忙,中间又外出了一段时间,虽然也上LOFTER,或者看到一些朋友QQ上加我,给我发信息询问,有些看到了有些可能没看到,偶尔回复了一两个,也不咋的详细,在此我想说,一方面 ...

  10. MySQL的SQL_CALC_FOUND_ROWS

    分页程序一般由两条SQL组成: SELECT COUNT(*) FROM ... WHERE .... SELECT ... FROM ... WHERE LIMIT ... 如果使用SQL_CALC ...