VC++6.0下通过opencv读入图像并反色

第一个opencv测试程序:

不多说,直接上代码,代码注释很详尽:

////////////////////////////////////////////////////////////////////////
//
// 该程序从文件中读入一幅图像,将之反色,然后显示出来.
//
////////////////////////////////////////////////////////////////////////
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <cv.h>
#include <highgui.h> 

int main(int argc, char *argv[])
{
	IplImage* img = 0;    //定义图像文件指针,指向载入的原始图像
	IplImage* pDstImg = 0; //定义图像文件指针,指向反色后的图像
	int height,width,channels;  //定位图像的长度(像素),宽带(像素),通道数(指每个像素用多少个字节表示)
	uchar *data;      //存储图像具体的像素数据

	char Image_Filename[20];  //输入图像文件的文件名

	printf("Please input the filename of image:\n");
	scanf("%s",Image_Filename);

	img=cvLoadImage(Image_Filename,0);   //载入图像函数,第一个参数为图像名称.第二个参数为辅助参数,
					     //有正,零,负三种值.正数表示以三通道图像载入(三通道即一个像素用3个字节表示),0表示
					     //以单通道载入图像,负数代表载入图像的通道数由图像本身决定.
	if(!img)
	{
		printf("Could not load image file: %s\n",argv[1]);
		exit(0);
	} 

	height    = img->height;  //获取图像高度(像素)
	width     = img->width;		//获取图像宽度(像素)
	channels  = img->nChannels; //获取图像通道数
	data      = (uchar *)img->imageData;  //获取图像像素数据
	printf("Processing a %dx%d image with %d channels\n",height,width,channels); 

	cvNamedWindow("mainWin", 0);   //创建一个名称为mainWin的窗口,用于显示图像.CV_WINDOW_AUTOSIZE值为1
					//表示固定窗口大小,若第二个参数为0表示窗口大小可变,图像也会随着窗口的大小而改变
	cvMoveWindow("mainWin", 0, 0);  //设置窗口的位置,第一个参数为窗口的名字,后面两个参数为窗口显示的位置,(0,0)表示显示在桌面的左上角.

	pDstImg = cvCreateImage(cvGetSize(img),img->depth,img->nChannels); //cvCreateImage函数返回指向一个图像文件指针,第一个参数指定图像
									 //的大小,第二个参数制定 像素的位深度,主要有以下支持格式:
							                //IPL_DEPTH_8U, IPL_DEPTH_8S, IPL_DEPTH_16U,IPL_DEPTH_16S, IPL_DEPTH_32S,
									//最后一个参数制定图像的通道数

	cvNot(img, pDstImg);   //cvNot(IplImage* src,IplImage* dest)将src图像的每个像素数据的每一位取反赋值给dest图像对应像素点数据

	cvShowImage("mainWin", img ); //在之前创建的mainWin窗口中显示图像

	cvWaitKey(0);     //等待敲击键盘,结束程序    

	cvReleaseImage(&img );  //释放图像文件指针
	cvReleaseImage(&pDstImg );
	return 0;
}

运行结果:

转载请注明:小刘

时间: 2024-10-03 21:58:49

VC++6.0下通过opencv读入图像并反色的相关文章

Windows平台VC++ 6.0 下的网络编程学习 - 简单的测试winsock.h头文件

最近学习数据结构和算法学得有点累了(貌似也没那么累...)...找了本网络编程翻了翻当做打一个小基础吧,打算一边继续学习数据结构一边也看看网络编程相关的... 简单的第一次尝试,就大致梳理一下看书+自己理解的东西. 1.首先是对Winsock的一点介绍:Winsock是一种标准的API(应用程序编程接口),主要用于网络中的数据通信,它允许两个应用程序在同一台机器上或通过网络相互通信.需要注意的是Winsock和协议无关,使用Winsock编程接口,应用程序可通过普通网络协议如:TCP/IP(网络

VC++6.0 下配置 pthread库2010年12月12日 星期日 13:14VC下的pthread多线程编程 转载

VC++6.0 下配置 pthread库2010年12月12日 星期日 13:14VC下的pthread多线程编程     转载 #include <stdio.h>#include <stdlib.h>#include <pthread.h> void* tprocess1(void* args){       int i=1;       while(i<=10){            printf("process1:%d\n",i);

opencv二值图反色处理

反色处理指的是:如果原先图像的背景是白色,而目标是黑色的话:经过反色处理后,背景变为白色,目标变为黑色. 在opencv中,对于二值图的反色处理有两种方法: 之前处理好的二值图的定义为:Mat  binaryImg; 1.直接使用opencv中的函数: //! inverts each bit of array (dst = ~src) CV_EXPORTS_W void bitwise_not(InputArray src, OutputArray dst, InputArray mask=n

VC++ 6.0下OpengGL配置以及glut配置

转自:http://blog.sina.com.cn/s/blog_5f0cf7bd0100c9oa.html OpenGL官方网站(英文) http://www.opengl.org 下面我将对Windows下的OpenGL编程进行简单介绍. 第一步:选择一个编译环境 现在Windows系统的主流编译环境有Visual Studio,Broland C++ Builder,Dev-C++等,它们都是支持OpenGL的.但这里我们选择VC++ 6.0作为学习OpenGL的环境. 第二步:安装GL

iOS实现图像的反色,怀旧,色彩直方图效果

反色是与原色叠加可以变为白色的颜色,即用白色(RGB:1.0,1.0,1.0)减去原色的颜色.比如说红色(RGB:1.0,0,0)的反色是青色(0,1.0,1.0).在OPENGL ES中为1. 通过导入GPUImage库的GPUImageColorInvertFilter来实现iOS的图像反色处理 1 ( 2 varying highp vec2 textureCoordinate; 3 4 uniform sampler2D inputImageTexture; 5 6 void main(

VC 2008 Express下安装OpenCV2.3.1

VC 2008 Express下安装OpenCV2.3.1 注意: 下列文档以VC2008 Express为例,VC2010下的配置应与本文档类似. VC 6.0不被OpenCV 2.3.1支持. VC Express是微软提供的免费版,可从此处下载: http://www.microsoft.com/visualstudio/en-us/products/2010-editions/express 建议先不要自己编译,如果使用预编译好的库有问题,再尝试自己编译. 目录 [隐藏] 1 安装所需要

Python+OpenCV实现图像边缘提取、图像滤波功能

在Jupyter Notebook上使用Python实现下述代码的边缘提取.图像滤波功能,这个过程中实现某些功能处理出来的图像可能会有点粗糙.关于opencv库的安装可以参考:Python下opencv库的安装过程与一些问题汇总. 一.边缘提取 import cv2#导入opencv库 #读取原灰度图片 image=cv2.imread("test.bmp") cv2.imshow("image", image)#将原图片命名为“image”显示出来 #图像的阈值分

实验2014062701:opencv对图像的点操作

#include<Windows.h>#include<cv.h>#include<highgui.h>#include <cxcore.h>int main(){    IplImage* img = cvLoadImage("1.jpg");    IplImage* dst = cvCreateImage(cvGetSize(img),img->depth,1);    cvNamedWindow("GRAY&quo

在python3下使用OpenCV 抓取摄像头图像并实时显示3色直方图

以下代码为在Python3环境下利用OpenCV 抓取摄像头的实时图像, 通过OpenCV的 calHist函数计算直方图, 并显示在3个不同窗口中. import cv2 import numpy as np from matplotlib import pyplot as plt import time cap  = cv2.VideoCapture(0) for i in range(0, 19):     print(cap.get(i)) while(1):     ret, fram