导航:首页 > 使用方法 > opencv创建图片的几种方法

opencv创建图片的几种方法

发布时间:2022-04-17 15:24:32

① opencv创建图片为什么我会有一个灰色

关于路径有一点需要说明的是,在C和C++里面,输出字符串时,如果想输出一个换行,那就要加上'\n'这个标志,类似的,输出一个TAB,就加上'\t',也就是说,反斜杠("\")这个符号会把跟在它后面的字符结合起来转义成其它字符。根据这个原理,如果想输出双引号('"'),就需要输入'\"',这样才会将包含了双引号的字符串正确的写入内存中。那么如果想输入一个反斜杠呢?很简单,只要敲'\\'就可以了。(关于为什么斜杠和反斜杠都可以的用来表示路径,可以点 这里为什么Windows 系统中用反斜杠表示路径,而C语言教材中都是用斜杠表示头文件的路径?)
要读取图像的存放路径有如下两种情况:
a. 存放在项目的根目录下
拿VS来说,就是如下的项目的根目录下(注意是项目的根目录,也就是选中解决方案后的地址,比如解决方案“test1”的路径是.../opencv/test1/test1.sln,那么就把图片保存到.../opencv/test1/test1这个路径下),对于这种情况,可以直接用相对路径去读取图像,因为程序默认的是从项目根目录下去寻找目标。
可以通过如下方式访问:
const char* imagename = "Lena.jpg";//项目根目录下存放Lena.jpg图片
或者在debug文件夹同级目录下建立一个文件夹专门用来存放图片,通过如下代码访问:
const char* imagename = "Opencv Picture\\Lena.jpg";//或者const char* imagename = "Opencv Picture/Lena.jpg";

此外,也可以将图片放在和生成的可执行文件(.exe)同级的目录下,直接通过"Lena.jpg",运行.exe来访问图片。
b. 存放在项目以外的地方
这种情况下需要通过绝对地址来进行访问,如下在D盘中建有Opencv Picture的文件夹,将图片存放其中,可以通过如下方式访问

const char* imagename = "D:\\Opencv Picture\\Lena.jpg";//或者const char* imagename = "D:/Opencv Picture/Lena.jpg";

如何从入门开始学习OpenCV

方法如下:

  1. 先去下载最新版OpenCV,网址如下:http://nchc.dl.sourceforge.net/project/opencvlibrary/opencv-win/2.4.3/OpenCV-2.4.3.exe。下载完成后解压到相应目录。本人解压到D:Program FilesOpenCV2.4.3。

  2. 有的文章提到使用CMake把OpenCV下面的范例生成为Visual Studio的工程,此处我没有这样做。直接使用范例。这里先把OpenCV目录下面的几个重要目录做个说明:

    doc目录:主要包含OpenCV的帮助文档。其中opencv2refman.pdf主要是OpenCV的各种类和函数的使用说明。

    opencv_tutorials.pdf,主要是下面教学代码目录里面各个教学范例的简单讲解。

    opencv_cheatsheet.pdf主要是最常用OpenCV类和函数的集合。此3个PDF文档对自学者帮助最大。

    samplescpp utorial_code目录:里面包含基本教学代码。和上面的opencv_tutorials.pdf文档遥相呼应,构成一个完整的自学体系。

    build目录:包含编译,调试,发布所需要的各类动态库,静态库,头文件等。因为OpenCV2.4.3好像只支持Visual Studio 2008以上版本,我在这里以Visual Studio 2008为例讲解如何让范例跑起来。

  3. 添加环境变量:此处我在path环境变量中添加如下目录:D:Program FilesOpenCV2.4.3uildx86vc9in。记住在前面一个目录后面加分号。

  4. 在Visual Studio中包含头文件目录:见附件中的图片,已经用红色矩形框标识如何操作。

  5. 在Visual Studio中包含库文件目录:见附件中的图片,已经用红色矩形框标识如何操作。4

  6. 建立一个新建Visual Studio VC win32控制台应用工程,这里我选择带预编译头的工程,省去添加cpp文件的工作。

  7. 代码创建:这里我选择samplescpp utorial_codeImgProcMorphology_2.cpp文件。先添加包含目录,如下(以后所有范例均可以如下添加):#include <opencv2/opencv.hpp>#include <stdio.h>然后复制代码。

  8. 编译文件:自然少不了要包含静态库,要添加的库(debug版和release差别就是文件名后多了一个d标识是debug版)如下:

    debug版:

    opencv_calib3d243d.lib

    opencv_contrib243d.lib

    opencv_core243d.lib

    opencv_features2d243d.lib

    opencv_flann243d.lib

    opencv_gpu243d.lib

    opencv_haartraining_engined.lib

    ibrelease版:

    opencv_calib3d243.lib

    opencv_contrib243.lib

    opencv_core243.lib

    opencv_features2d243.lib

    opencv_flann243.lib

    opencv_gpu243.lib

  9. 字符集设置:如果编译过程中出现如下错误:不能将参数 1 从“_TCHAR *”转换为“const std::string &”原因如下: 无法从“_TCHAR *”转换为“const std::string”。请字符集设置为“使用多字节字符集”。

  10. 最后指定命令后参数:方法见附件。这样就可以不用在windows命令行下输入参数了,方便调试,但是要注意,图片必须放在你所建立的工程目录下(和.cpp以及.h文件同一目录)。否则就要加上相应的路径。如果参数多于1个,请以空格分开。

  11. 支持所有参数设置完成,开始编译运行吧。如果Visual Studio无问题的话,按照以上按部就班操作,每个范例均可以正常运行。

③ 如何使用opencv制作全景照片

①:首先打开ptgui 软件,打开“加载图像功能”,选择并导入图片,或者将需要处理的一组图片全选直接拖到软件操作界面:

④ 如何利用opencv进行样本训练

OpenCV训练分类器
一、简介

目标检测方法最初由Paul Viola [Viola01]提出,并由Rainer Lienhart [Lienhart02]对这一方法进行了改善。
该方法的基本步骤为:
首先,利用样本(大约几百幅样本图片)的 harr 特征进行分类器训练,得到一个级联的boosted分类器。

分类器中的"级联"是指最终的分类器是由几个简单分类器级联组成。在图像检测中,被检窗口依次通过每一级分类器, 这样在前面几层的检测中大部分的候选区域就被排除了,全部通过每一级分类器检测的区域即为目标区域。

分类器训练完以后,就可以应用于输入图像中的感兴趣区域(与训练样本相同的尺寸)的检测。检测到目标区域(汽车或人脸)分类器输出为1,否则输出为0。为了检测整副图像,可以在图像中移动搜索窗口,检测每一个位置来确定可能的目标。为了搜索不同大小的目标物体,分类器被设计为可以进行尺寸改变,这样比改变待检图像的尺寸大小更为有效。所以,为了在图像中检测未知大小的目标物体,扫描程序通常需要用不同比例大小的搜索窗口对图片进行几次扫描。

目前支持这种分类器的boosting技术有四种:
Discrete Adaboost, Real Adaboost, Gentle Adaboost and Logitboost。
"boosted" 即指级联分类器的每一层都可以从中选取一个boosting算法(权重投票),并利用基础分类器的自我训练得到。

根据上面的分析,目标检测分为三个步骤:
1、 样本的创建
2、 训练分类器

3、 利用训练好的分类器进行目标检测。

二、样本创建
训练样本分为正例样本和反例样本,其中正例样本是指待检目标样本(例如人脸或汽车等),反例样本指其它任意图片,所有的样本图片都被归一化为同样的尺寸大小(例如,20x20)。
负样本
负样本可以来自于任意的图片,但这些图片不能包含目标特征。负样本由背景描述文件来描述。背景描述文件是一个文本文件,每一行包含了一个负样本图片的文件名(基于描述文件的相对路径)。该文件必须手工创建。
e.g: 负样本描述文件的一个例子:
假定目录结构如下:
/img
img1.jpg
img2.jpg
bg.txt
则背景描述文件bg.txt的内容为:
img/img1.jpg
img/img2.jpg
正样本
正样本由程序craatesample程序来创建。该程序的源代码由OpenCV给出,并且在bin目录下包含了这个可执行的程序。
正样本可以由单个的目标图片或者一系列的事先标记好的图片来创建。
Createsamples程序的命令行参数:
命令行参数:
-vec <vec_file_name>
训练好的正样本的输出文件名。
-img<image_file_name>
源目标图片(例如:一个公司图标)
-bg<background_file_name>
背景描述文件。
-num<number_of_samples>
要产生的正样本的数量,和正样本图片数目相同。
-bgcolor<background_color>
背景色(假定当前图片为灰度图)。背景色制定了透明色。对于压缩图片,颜色方差量由bgthresh参数来指定。则在bgcolor-bgthresh和bgcolor+bgthresh中间的像素被认为是透明的。
-bgthresh<background_color_threshold>
-inv
如果指定,颜色会反色
-randinv
如果指定,颜色会任意反色
-maxidev<max_intensity_deviation>
背景色最大的偏离度。
-maxangel<max_x_rotation_angle>
-maxangle<max_y_rotation_angle>,
-maxzangle<max_x_rotation_angle>
最大旋转角度,以弧度为单位。
-show
如果指定,每个样本会被显示出来,按下"esc"会关闭这一开关,即不显示样本图片,而创建过程继续。这是个有用的debug选项。
-w<sample_width>
输出样本的宽度(以像素为单位)
-h《sample_height》
输出样本的高度,以像素为单位。
注:正样本也可以从一个预先标记好的图像集合中获取。这个集合由一个文本文件来描述,类似于背景描述文件。每一个文本行对应一个图片。每行的第一个元素是图片文件名,第二个元素是对象实体的个数。后面紧跟着的是与之匹配的矩形框(x, y, 宽度,高度)。

⑤ opencv 如何在一个窗口里面插入多张图片

不是很明白题目的意思,是一个窗口显示多张图么?可以先开辟一个大的图像(大小是所有小图的和),然后根据你要显示的图像大小和位置分别设置ROI,把小图进去。最后释放ROI把大图显示出来

⑥ python。PIL创建一个图片如何用opencv编辑

先用PIL的接口保存成图像文件(比如xxx.bmp),然后再用opencv的接口打开。

⑦ 在opencv中,cvcreateimage和cvloadimage这两个函数有什么区别

cvcreateimage是创建了一个原来没有的图像指针IplImage,IplImage里的图像宽高和像素,通道等都要你自己去设置。
cvloadimage是读取图像,并把图像的相关信息放入IplImage里,其IplImage里图像宽高和像素,通道,位深等信息已经存在,你可以读取并用来计算。

⑧ 【opencv】关于用cvPyrDown()创建一幅宽度和高度为输入图像一半尺寸的图像的问题

你的程序写的有问题,你的dopyrdown函数采用函数返回值的方式输出采样后的图像。可是在你调用的时候是直接调用dopyrdown函数的,并没有ipimage指针去接收这个函数的返回值啊!也就是说缩小图像的操作做完了,但是程序中没有数据结构去接收这个结果。你在输出output图像的时候也是直接使用img图像的。

⑨ 已知图像各个像素点的RGB值如何生成图像,最好是使用OpenCV

用mat的话直接imshow就行了以下为伪代码:
#include<iostream>
#include<stack>
#include"opencv2/opencv.hpp"
usingnamespacestd;
usingnamespacecv;
Matim(600,800,CV_8UC3,Scalar(255,255,255));//3个255为颜色的三通道BGR
im.ptr<uchar>(x)[y*3]=color;//x,y为点的坐标,color为你给定的颜色B
im.ptr<uchar>(x)[y*3+1]=color;//x,y为点的坐标,color为你给定的颜色G
im.ptr<uchar>(x)[y*3+2]=color;//x,y为点的坐标,color为你给定的颜色R
imshow("grayim",grayim);//生成图片

⑩ 用OpenCV怎样创建一个纯颜色的图像

Mat(rows,cols,type,cv::scalar(B,G,R)给定不同数值,颜色不同。)

阅读全文

与opencv创建图片的几种方法相关的资料

热点内容
切纸刀的使用方法 浏览:373
热疹的治疗方法 浏览:998
职场学习的方法和技巧 浏览:604
折纸飞机的方法a4纸最简单的 浏览:519
学英语的技巧和方法初中 浏览:58
钢笔的使用方法图片 浏览:521
科学方法论的优势到底在哪里 浏览:910
浙江师范大学研究生复试方法 浏览:38
直螺纹连接焊接方法 浏览:794
绿茄子切滚刀块图片方法 浏览:948
手淫正确方法 浏览:891
摄像机电源安装方法 浏览:791
西师版三年级下册数学教学方法 浏览:982
在哪里查询大学绩点的计算方法 浏览:403
糖醋生姜怎么腌制方法 浏览:746
笔记本电脑键盘内部清理方法 浏览:903
如何用统计方法得出结论 浏览:805
修辞和说明方法是什么 浏览:725
两位数减整十位数正确方法 浏览:670
管道弯头45度等高计算方法 浏览:484