三通道修改:
// opencv_iplimage.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <opencv.hpp>
#include <Windows.h>
using namespace cv;
struct color
{
int r;
int g;
int b;
};
int _tmain(int argc, _TCHAR* argv[])
{
IplImage* gray;
BYTE* data ;
int m_Width = 640;
int m_Height = 480;
IplImage* pImgEmbed = NULL;
gray = cvLoadImage("Chrysanthemum.jpg",1);
data = (uchar *)gray->imageData;
m_Width = gray->width;
m_Height = gray->height;
IplImage* iplimage = cvCreateImageHeader(cvSize(m_Width,m_Height),gray->depth,gray->nChannels);
int w = 1024;
for(int i=0;i<768;i+=1)
{
for(int j=0;j<w;j+=1)
{
data[(j+i*w)*3] = 0; //蓝
data[(j+i*w)*3+1] = 0; //绿
data[(j+i*w)*3+2] = 255; //红
}
}
pImgEmbed = cvCreateImageHeader(cvSize(m_Width,m_Height),gray->depth,gray->nChannels);
cvSetData(pImgEmbed,data,pImgEmbed->widthStep);
cvNamedWindow("window",0);
cvShowImage("widnow",pImgEmbed);
cvWaitKey();
return 0;
}
单通道修改:
// opencv_iplimage.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <opencv.hpp>
#include <Windows.h>
using namespace cv;
struct color
{
int r;
int g;
int b;
};
int _tmain(int argc, _TCHAR* argv[])
{
IplImage* gray;
BYTE* data ;
int m_Width = 640;
int m_Height = 480;
IplImage* pImgEmbed = NULL;
gray = cvLoadImage("Chrysanthemum.jpg",0);
data = (uchar *)gray->imageData;
m_Width = gray->width;
m_Height = gray->height;
IplImage* iplimage = cvCreateImageHeader(cvSize(m_Width,m_Height),gray->depth,gray->nChannels);
int w = 640;
for(int i=0;i<480;i+=1)
{
for(int j=0;j<w;j+=1)
{
data[(j+i*w)*1] = 125; //黑白
}
}
pImgEmbed = cvCreateImageHeader(cvSize(m_Width,m_Height),gray->depth,gray->nChannels);
cvSetData(pImgEmbed,data,pImgEmbed->widthStep);
cvNamedWindow("window",0);
cvShowImage("widnow",pImgEmbed);
cvWaitKey();
return 0;
}