#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;
}
IplImage 结构体的解释
最新推荐文章于 2021-04-05 15:07:06 发布