例1显示照片

#include "stdafx.h"

#include <opencv2/opencv.hpp>

using namespace std;

using namespace cv;

int main(int argc, char* argv[])

{

const char* imagename = "woheadai.jpg";

Mat img = imread(imagename);

if(img.empty())

{

fprintf(stderr, "Can not load image %s\n", imagename);

return -1;

}

imshow("image", img);

waitKey();

return 0;}

从文件中读入一幅图像,将之反色,然后显示出来

//

// hello-world.cpp

//

//

#include <stdafx.h>

#include <stdlib.h>

#include <stdio.h>

#include <math.h>

#include <cv.h>

#include <highgui.h>

int main(int argc, char *argv[])

{

IplImage* img = 0;

int height,width,step,channels;

uchar *data;

int i,j,k;

const char* imagename = argc > 1 ? argv[1] : "ha.jpg";

/* if(argc<2){

printf("Usage: main <image-file-name>\n\7");

exit(0);

}

*/

// load an image

img=cvLoadImage(imagename);

if(!img){

printf("Could not load image file: %s\n",argv[1]);

exit(0);

}

// get the image data

height    = img->height;

width     = img->width;

step      = img->widthStep;

channels  = img->nChannels;

data      = (uchar *)img->imageData;

printf("Processing a %dx%d image with %d channels\n",height,width,channels);

// create a window

cvNamedWindow("ao", 0);

cvMoveWindow("ao", 100, 100);

// invert the image

for(i=0;i<height;i++) for(j=0;j<width;j++) for(k=0;k<channels;k++)

data[i*step+j*channels+k]=255-data[i*step+j*channels+k];

// show the image

cvShowImage("ao", img );

// wait for a key

cvWaitKey(0);

// release the image

cvReleaseImage(&img );

return 0;

}

单张RGB图片变成灰度图并保存

#include "stdafx.h"

#include "cv.h"

#include "highgui.h"

int main(int argc, char* argv[])

{

IplImage *image;

IplImage *result;

image=cvLoadImage("lena.jpg",-1);

//注意指针变量定要先初始化才能使用,否则崩溃

//灰度转换时通道一定¬要设置正确

int channel=1;  //image->nChannels;

int depth=image->depth;

CvSize sz;

sz.width=image->width;

sz.height=image->height;

result=cvCreateImage(sz,depth,channel);

cvCvtColor(image,result,CV_BGR2GRAY);

cvNamedWindow("original",1);

cvShowImage("original",image);

cvNamedWindow("gray",1);

cvShowImage("gray",result);

cvSaveImage("hlena.jpg",result);

cvWaitKey(0);

cvReleaseImage(&image);

cvReleaseImage(&result);

cvDestroyWindow("original");

cvDestroyWindow("gray");

return 0;

}

例2显示视频

#include "stdafx.h"

#include <cv.h>

#include <cxcore.h>

#include <highgui.h>

void main( )

{

cvNamedWindow("example2",0);

CvCapture *capture=cvCreateFileCapture("111.mp4");

IplImage *frame;

while(1)

{

frame=cvQueryFrame(capture);

if(!frame){break;}

cvShowImage("example2",frame);

char c=cvWaitKey(33);

if(c==27){break;}

}

cvReleaseCapture(&capture);

cvDestroyWindow("example2");

}

例3 滚动条显示视频

#include "stdafx.h"

#include <cv.h>

#include <cxcore.h>

#include <highgui.h>

int g_slider_position = 0;

CvCapture* g_capture = NULL;

void onTrackbarSlide(int pos)

{

cvSetCaptureProperty(g_capture,CV_CAP_PROP_POS_FRAMES,pos);

}

int main(int argc, char** argv)

{

cvNamedWindow( "Example3", CV_WINDOW_AUTOSIZE );

g_capture = cvCreateFileCapture( "1111.mp4");

int frames = (int)cvGetCaptureProperty(g_capture,CV_CAP_PROP_FRAME_COUNT);

if( frames!= 0 )

{

cvCreateTrackbar("Position","Example3",&g_slider_position,frames,onTrackbarSlide);

}

IplImage* frame;

while(1)

{

frame=cvQueryFrame(g_capture);

if(!frame){break;}

cvShowImage("example2",frame);

char c=cvWaitKey(33);

if(c==27){break;}

} // While loop (as in Example 2) capture & show video…-

cvReleaseCapture(&g_capture);

cvDestroyWindow("example2");// Release memory and destroy window…-

return(0);

}

例4图像平滑处理

#include "stdafx.h"

#include "cv.h"

#include "highgui.h"

void example2_4( IplImage* image )

{

// Create some windows to show the input

// and output images in.

cvNamedWindow( "Example4-in" );

cvNamedWindow( "Example4-out" );

// Create a window to show our input image

//

cvShowImage( "Example4-in", image );

//Create an image to hold the smoothed output

//cvGetSize(image)

IplImage* out=cvCreateImage(cvGetSize(image),IPL_DEPTH_8U,3);

// Do the smoothing

//

cvSmooth( image, out, CV_GAUSSIAN, 3, 3 );//CV_GAUSSIAN

// Show the smoothed image in the output window

//

cvShowImage( "Example4-out", out );

// Be tidy

//

cvReleaseImage( &out );

// Wait for the user to hit a key, then clean up the windows

//

cvWaitKey( 0 );

cvDestroyWindow( "Example4-in" );

cvDestroyWindow( "Example4-out" );

}

int main(void)

{

IplImage* img = cvLoadImage("woheadai.jpg");

example2_4(img);

return 1;

}

例5 使用cvPyDown()使图片长宽各缩小一半

#include "stdafx.h"

#include "highgui.h"

#include"cv.h"

IplImage * doPyrDown(IplImage * in)// int filter = IPL_GAUSSIAN_5X5

{

assert(in->width%2 == 0 && in->height%2 == 0);

IplImage * out = cvCreateImage(

cvSize( in->width/2, in->height/2 ),

in->depth,

in->nChannels

);

cvPyrDown( in, out,CV_GAUSSIAN_5x5);

cvNamedWindow(  "tu1" ,1);

cvShowImage( "tu1", out);

cvWaitKey(0);

cvSaveImage("wheadai.jpg", out);

cvReleaseImage(&out);

cvDestroyWindow("tu1");

return( out );

};

int main(int argc,char ** argv)

{

IplImage * img = cvLoadImage("woheadai.jpg");

doPyrDown( img );

cvReleaseImage(&img);

return 0;

}

例6 canny 边缘检测将输出写入一个单通道(灰度级)图像

#include "stdafx.h"

#include "highgui.h"

#include"cv.h"

IplImage * doCanny(IplImage * in,double lowThresh, double highThresh,int aperture )

{

if(in->nChannels !=1)

return(0);

IplImage * out = cvCreateImage(cvSize( in->width,in->height), IPL_DEPTH_8U,1 );

cvCanny( in, out, lowThresh, highThresh, aperture);

cvNamedWindow(  "hb" ,1);

cvShowImage( "hb", out);

cvWaitKey(0);

cvSaveImage("11.jpg", out);

cvReleaseImage(&out);

cvDestroyWindow("hb");

return( out );

};

int main(int argc,char ** argv)

{

IplImage * img = cvLoadImage( "11.jpg", 0);

doCanny( img,1,2.4,3);

cvReleaseImage(&img);

return 0;

}

例7 图像处理中两次缩放和canny 边缘检测例 8 通过每个独立阶段释放内存来简化7中图像处理

#include "stdafx.h"

#include "highgui.h"

#include"cv.h"

IplImage * out;

IplImage * doPyrDown(IplImage * in )

{

assert(in->width%2 == 0 && in->height%2 == 0);

out = cvCreateImage( cvSize( in->width/2, in->height/2 ), in->depth, in->nChannels );

cvPyrDown( in, out,CV_GAUSSIAN_5x5);

return( out );

};

IplImage * doCanny( IplImage * in, double lowThresh, double highThresh, int aperture )

{

if(in->nChannels !=1)

return(0);

IplImage * out = cvCreateImage(cvSize( in->width, in->height),IPL_DEPTH_8U, 1 );

cvCanny( in, out, lowThresh, highThresh, aperture);

return( out );

};

int main(int argc,char ** argv)

{

IplImage * img = cvLoadImage( "ha.jpg", 0);

out = doPyrDown( img );

out = doPyrDown ( out );

out = doCanny( out,1,3,3);

cvNamedWindow(  "kk" ,1);

cvShowImage( "kk", out);

cvWaitKey(0);

cvSaveImage("haha.jpg", out);

cvReleaseImage(&out);

cvDestroyWindow("kk");

cvReleaseImage(&img);

return 0;

}

例9 capture 结构初始化后,从摄像设备读入图像并保存(或者从视频无区别)

#include "stdafx.h"

#include "cv.h"

#include "highgui.h"

#include "conio.h"

int main( ) {

CvCapture *capture = cvCaptureFromCAM( CV_CAP_ANY );

IplImage *image = NULL; //*dst = NULL;

image = cvQueryFrame( capture );

CvSize size = cvGetSize( image );

//dst = cvCreateImage( size, image->depth, 1 );

double fps = 10;

CvVideoWriter* writer = cvCreateVideoWriter( "Video from CAMERA.avi", CV_FOURCC('X','V','I','D'), fps, size, 1 );

cvNamedWindow( "ha", 1);

while( (image = cvQueryFrame( capture )) != NULL )

{

printf("Enteredn");

//cvCvtColor( image, dst, CV_RGB2GRAY );

cvShowImage("ha", image);

cvWriteFrame( writer, image );

if( (cvWaitKey(100)) == 27 )

break;

}

cvReleaseVideoWriter( &writer );

cvReleaseCapture( &capture );

//cvReleaseImage( &dst );

cvDestroyWindow( "ha" );

}

opencv基础小程序大集合相关推荐

  1. C语言 C++基础面试知识大集合

    C语言 / C++基础面试知识大集合 const 作用 修饰变量,说明该变量不可以被改变: 修饰指针,分为指向常量的指针(pointer to const)和自身是常量的指针(常量指针,const p ...

  2. python祝福祖国代码_“小程序 大梦想”之创意编程校园邀请赛------53信息技术学科周...

    原标题:"小程序 大梦想"之创意编程校园邀请赛------53信息技术学科周 如今"人工智能"."创意编程"这些新热词已经深入人们的学习和生 ...

  3. python基础代码事例-Python简单基础小程序的实例代码

    1 九九乘法表 for i in range(9):#从0循环到8 i += 1#等价于 i = i+1 for j in range(i):#从0循环到i j += 1 print(j,'*',i, ...

  4. python程序实例教程基础-Python简单基础小程序的实例代码

    1 九九乘法表 for i in range(9):#从0循环到8 i += 1#等价于 i = i+1 for j in range(i):#从0循环到i j += 1 print(j,'*',i, ...

  5. java中的基本小程序_12个用Java编写基础小程序经典案例(收藏篇)

    原标题:12个用Java编写基础小程序&经典案例(收藏篇) 如果是刚接触或者刚学习java,练习一些基础的算法还是必须的,可以提升思维和语法的使用. 1.输出两个int数中的最大值 impor ...

  6. python经典程序实例-Python简单基础小程序的实例代码

    1 九九乘法表 for i in range(9):#从0循环到8 i += 1#等价于 i = i+1 for j in range(i):#从0循环到i j += 1 print(j,'*',i, ...

  7. python简单程序实例-Python简单基础小程序的实例代码

    1 九九乘法表 for i in range(9):#从0循环到8 i += 1#等价于 i = i+1 for j in range(i):#从0循环到i j += 1 print(j,'*',i, ...

  8. java基础代码实例_全网都在找的Python简单基础小程序的实例代码

    这篇文章主要介绍了Python简单基础小程序的实例代码,非常不错,具有一定的参考借鉴价值 ,需要的朋友可以参考下. 1 九九乘法表 3 4 5 6 7for i in range(9):#从0循环到8 ...

  9. 微信小程序大转盘完整代码

    微信小程序大转盘完整代码 效果图 wxml片段 <!--index.wxml--> <view class="container"><image sr ...

最新文章

  1. 输入一行字符,判断单词数
  2. AI艺术家带雕塑作品参展被海关扣押,只因摄像头眼睛被指涉及间谍行为?
  3. 2014/12/05 随笔 2014-12-05 12:50 26人阅读 评论(0) 收藏...
  4. SQL Server使用ROW_NUMBER函数进行分页
  5. SetProcessWorkingSetSize 函数的骗局
  6. char[]:strlen和sizeof的区别
  7. python中textinput_python – 在Kivy应用程序中获取textinput值
  8. zabbix客户端掉线查看进程time_wait过多
  9. 测试软件是否丢失数据,11种方法检测软件的可靠性
  10. 操作数据库pymysql
  11. git升级后jenkins的报错
  12. FileRecv VNCViewer 使用方法
  13. 华为p8刷linux系统,华为手机助手ROM一键刷机
  14. SwitchHosts For Mac快速切换修改hosts文件工具
  15. H5表单中时间日期控件
  16. python猜拳代码_猜拳代码python
  17. 厉害了,Pandas表格还能五彩斑斓的展示数据,究竟是怎么做到的呢?
  18. 如何创建NEO轻客户端
  19. SQUIRREL语言
  20. Linux入门——与目录相关的一些命令(pwd、ls、cd)及tab和上下方向键的使用

热门文章

  1. elasticsearch index、create和update的源码分析
  2. 大众点评订单分库分表实践之路
  3. quartz 报错:java.lang.classNotFoundException
  4. 从weblogic的一个教训
  5. 2020:编程语言大盘点
  6. 从变量到封装:一文带你为机器学习打下坚实的Python基础 By 机器之心2017年10月13日 10:43 本文整体梳理了 Python 的基本语法与使用方法,并重点介绍了对机器学习十分重要的且常
  7. 算法与数据结构(选择排序)
  8. Spring5源码 - 05 invokeBeanFactoryPostProcessors 源码解读_3细说invokeBeanDefinitionRegistryPostProcessors
  9. Quartz-JobDataMap 参数传递
  10. c语言 自动包含头文件,C语言不要重复包含.h头文件和.c文件