IplImage 结构体的解释

#include "highgui.h"
#include "stdlib.h"

#include <iostream>


int main(int argc, char* argv[])
{
	IplImage* im;  // IplImage结构体默认的origin是0,(图像的初始位置)
	// widthStep 是表示一行的字节数,nChannels 表示通道数,彩色图像有三个通道(B,G,R),这三个通道的值,在OPenCV中的
	// 排列顺序是:B0G0R0B1G1R1B2G2R2.....BnGnRn,采用这种交排列的方式进行存储。

	im = cvLoadImage("F:\\2.jpg");
	//im->origin = 1; // 这时的图像是取反的,
	IplImage* sub_img;
	sub_img = cvLoadImage("F:\\1.jpg");

	/*cvNamedWindow("小崔");
	cvShowImage("小崔", sub_img);*/

	CvRect rect;
	rect.x = 303;
	rect.y = 55;
	rect.width = sub_img->width;
	rect.height = sub_img->height;

	cvSetImageROI(im, rect); // 这个就是设置对图像感性的图像区域为rect,
	cvCopy(sub_img, im); // 拷贝将sub_img拷贝到im图像中,
	cvResetImageROI(im); // 取消感性的区域,

///这里有问题,
	/*for (int y = 0; y < sub_img->height; y++)
	{
		unsigned char* subImageData = (unsigned char*)(sub_img->imageData + y*sub_img->widthStep);
		unsigned char* bigImageData = (unsigned char*)(sub_img->imageData + (y+rect.y)*sub_img->widthStep);
		for (int x = 0; x < sub_img->width; x++)
		{
			bigImageData[3 * (x + rect.x) + 0] = subImageData[3 * x + 0];
			bigImageData[3 * (x + rect.x) + 1] = subImageData[3 * x + 1];
			bigImageData[3 * (x + rect.x) + 2] = subImageData[3 * x + 2];
		}
	}*/
///


	//IplImage* src = cvCreateImage(cvSize(20, 20), IPL_DEPTH_32S, 1);  // IPL_DEPTH_32S颜色的深度32位有符号的,后边的1是表示单通道,

	//IplImage* b_im, *g_im, *r_im;
	//
	//b_im = cvCreateImage(cvGetSize(im), IPL_DEPTH_8U, 1);
	//g_im = cvCreateImage(cvGetSize(im), IPL_DEPTH_8U, 1);
	//r_im = cvCreateImage(cvGetSize(im), IPL_DEPTH_8U, 1);

	//int x, y;

	//for (y = 0; y < im->height; y++)
	//{
	//	unsigned char* prow = (unsigned char*)(im->imageData + y*im->widthStep);

	//	unsigned char* brow = (unsigned char*)(b_im->imageData + y*b_im->widthStep);
	//	unsigned char* grow = (unsigned char*)(g_im->imageData + y*g_im->widthStep);
	//	unsigned char* rrow = (unsigned char*)(r_im->imageData + y*r_im->widthStep);

	//	for (x = 0; x < im->width; x++)
	//	{
	//		brow[x] = prow[3 * x + 0]; // b 通道,
	//		grow[x] = prow[3 * x + 1]; // g 通道,
	//		rrow[x] = prow[3 * x + 2]; // r 通道,

	//	    prow[3 * x + 0] = 0; 
	//	    prow[3 * x + 1] = 0; 
	//		prow[3 * x + 2] = 255; 
	//	}
	//}
	 ROI是Region Of Internet 的缩写,表示的是在一幅大图像的感兴趣的区域,“感兴趣区域”,指的是在一幅大图像中,
	我们需要做处理的一部分。COI是指感兴趣的通道,彩色图像有BGR三个通道,所以可以选择其中一个作为感兴趣的通道。
	
	cvNamedWindow("1");
	cvShowImage("1", im);

	/*cvNamedWindow("b");
	cvNamedWindow("g");
	cvNamedWindow("r");

	cvShowImage("b", b_im);
	cvShowImage("g", g_im);
	cvShowImage("r", r_im);*/

	cvWaitKey(0);

	cvReleaseImage(&im);
	cvReleaseImage(&sub_img);

	/*cvReleaseImage(&b_im);
	cvReleaseImage(&g_im);
	cvReleaseImage(&r_im);*/

	cvDestroyWindow("1");
	cvDestroyWindow("小崔");
	/*cvDestroyWindow("b");
	cvDestroyWindow("g");
	cvDestroyWindow("r");*/
	
	return 0;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值