#include <cv.h> #include <highgui.h> #include "stdio.h" // ch3_ex3_12 image_name x y width height add# int main( ) //图片选中区域每个点像素增加150(也可以选定指定通道增加像素150) { IplImage* src; cvNamedWindow("Example3_12_pre", CV_WINDOW_AUTOSIZE); cvNamedWindow("Example3_12_post", CV_WINDOW_AUTOSIZE);
src=cvLoadImage("faceScene.jpg",1); int z=src->nChannels; printf("z=%d",z); //图片是3通道的,即RGB int x = 200; //指定矩形区域的左上角x int y = 200; //指定矩形区域的左上角y int width =400; //指定矩形区域宽 int height = 400; //指定矩形区域高 int add = 150;
1. load
2. set ROI
3. save
CDC MemDC;//定义一个DC
用MemDC.CreateCompatibleDC创建一个兼容DC。
用LoadImage将你的文件加载进来。HBitmap hBitmap=::LoadImage(NULL,"文件路径",IMAGE_BITMAP,0,0,LR_LOADFROMFILE);
用MemDC.SelObject将上面的hBitmap加载进DC中
第二步:
用BitBlt将你要的区域贴到MemDC中。
第三步:
写文件,这个代码比较长,将一个hBitmap位图对象写进文件的代码你可以看这个:http://blog.csdn.net/wltg2001/archive/2008/04/17/2300258.aspx
#include <highgui.h>
#include "stdio.h"
// ch3_ex3_12 image_name x y width height add#
int main( ) //图片选中区域每个点像素增加150(也可以选定指定通道增加像素150)
{ IplImage* src;
cvNamedWindow("Example3_12_pre", CV_WINDOW_AUTOSIZE);
cvNamedWindow("Example3_12_post", CV_WINDOW_AUTOSIZE);
src=cvLoadImage("faceScene.jpg",1); int z=src->nChannels; printf("z=%d",z); //图片是3通道的,即RGB int x = 200; //指定矩形区域的左上角x
int y = 200; //指定矩形区域的左上角y
int width =400; //指定矩形区域宽
int height = 400; //指定矩形区域高
int add = 150;
cvShowImage( "Example3_12_pre", src);
cvSetImageROI(src, cvRect(x,y,width,height));
cvAddS(src, cvScalar(add,0,0),src); //图片选中区域蓝色通道增加150
cvAddS(src, cvScalar(0,add,0),src); //图片选中区域绿色通道增加150
cvAddS(src, cvScalar(0,0,add),src); //图片选中区域红色通道增加150
cvResetImageROI(src); //保存区域
cvShowImage( "Example3_12_post",src);
cvWaitKey();
cvReleaseImage( &src );
cvDestroyWindow("Example3_12_pre");
cvDestroyWindow("Example3_12_post");
return 0;
}
int flagx,flagy;
for(int i=180; i<bm.bmHeight-180; i++)
{
for(int j=bm.bmWidth-180; j>180; j--)
{
pGreenDate[i*bm.bmWidth+j]=pData[i*nWidth+j*3+1];
if (min>pData[i*nWidth+j*3+1])
{
min=pData[i*nWidth+j*3+1];
flagx=j;
flagy=i;
}
}
}
我想找到pData[i*nWidth+j*3+1]的值在某个区间内的所有的 i、j 都是多少
应该怎么做啊
2、你如果借助了什么类库打开bmp,就用还类库的保存函数。在这自己,自己建立一副bmp。
看看帮助文档同时参考下7楼很简单的
然后根据你的需要读取一部分到另一个矩阵
data中,然后将data写入到一个bmp文件中,
其中,依次写BITMAPFILEHEADER、BITMAPINFOHEADER
中的数据,最后将data数据写入。然后保存
就ok了。