三通道修改:
// 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;
}
本文深入探讨了图像处理和视频特效领域的关键技术,包括OpenGL ES滤镜、OpenCV图像处理、人脸标定AR等,提供了丰富的实战案例和技术解读。

被折叠的 条评论
为什么被折叠?



