为什么图像处理结果 只有一半 ??

dear_zxj_lkh 2010-05-10 08:25:27

#include "stdafx.h"
#include <highgui.h>

int main(int argc, char** argv)
{
//循环参数
int x, y;

// 像素值
double result;
uchar pixel[4];

//声明IplImage指针
IplImage* savepFrame = NULL;

IplImage *change = NULL;

//创建窗口

cvNamedWindow("原图", 1);

cvNamedWindow("增强",1);

//使窗口有序排列
cvMoveWindow("原图", 30, 0);

cvMoveWindow("增强", 420, 0);

savepFrame = cvLoadImage("flower.jpg",CV_LOAD_IMAGE_ANYDEPTH | CV_LOAD_IMAGE_ANYCOLOR);

change = cvCreateImage( cvSize( savepFrame->width, savepFrame->height ), savepFrame->depth, savepFrame->nChannels );

cvSet( change,cvScalarAll( 255 ), 0 );

for( y = 0; y < savepFrame->height - 1; ++y )
{
for( x = 0; x < savepFrame->width - 1; ++x )
{
pixel[0] = ((uchar*)( savepFrame->imageData +savepFrame->widthStep * y ))[ x ];
pixel[1] = ((uchar*)(savepFrame->imageData + savepFrame->widthStep * y ))[ x + 1 ];
pixel[2] = ((uchar*)( savepFrame->imageData +savepFrame->widthStep * ( y + 1 ) ))[ x ];
pixel[3] = ((uchar*)( savepFrame->imageData + savepFrame->widthStep * ( y + 1 ) ))[ x + 1 ];

result = sqrt(( pixel[0] - pixel[3] )*( pixel[0] - pixel[3] ) + ( pixel[1] - pixel[2] )*( pixel[1] - pixel[2] ));

((uchar*)(change->imageData + change->widthStep * y ))[x] = (uchar)result;

}
}

cvShowImage("原图", savepFrame); //原图
cvShowImage("增强", change); //增强后的图片

cvWaitKey(0);

//销毁窗口
cvDestroyWindow("原图");
cvDestroyWindow("增强");

return 0;
}
问:原图显示还正常,可是增强后的图就~~~变成一部分了。大概是3分之一。
...全文
215 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
bEst_02 2010-05-11
  • 打赏
  • 举报
回复
正在学习opencv,帮顶
dear_zxj_lkh 2010-05-11
  • 打赏
  • 举报
回复
啊 难道太简单了 没人回啊~!!
郑晓杰921 2010-05-10
  • 打赏
  • 举报
回复
啊 这个问题有点意思啊 高手快来 我也学习学习啊

64,646

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧