2 asongsongsong asongsongsong 于 2014.05.12 08:34 提问

关于使用opencv读图片的问题

![CSDN移动问答][1]小弟菜菜,在下面的程序中读入一幅图片的像素值后,然后再编译运行,读出来的值就跟上一次的不同了(但相差不多),在第三次至以后编译运行,读出的数值却和第二次相同了。程序最后面有一句保存图像的语句,但想着我没有修改图像啊,只是输出一下而已,为何酱紫啊??大神快快来你快快来...
// read_image.cpp : Defines the entry point for the console application.
#include "stdafx.h"
#include "cv.h"
#include "highgui.h"
#include "cxcore.h"
#include "cxtypes.h"
#include
#include
using namespace std;

int main(int argc, char* argv[])
{

IplImage* src=cvLoadImage("F:\001.jpg",CV_LOAD_IMAGE_ANYDEPTH|CV_LOAD_IMAGE_ANYCOLOR);//以载入图像(原始状态)
cvNamedWindow("win");
cvShowImage("win",src);
cvWaitKey(0);

int x,y;
//ofstream f1("pixel_val.txt");
for(y=0;y!=1;y++)
{
unsigned char* row=(unsigned char*)(src->imageData+y*src->widthStep);
for(x=0;x!=24;x++)
{

cout<<endl;
cout<<"x="<<x<<endl;
cout<<"before:"<<(int)row[3*x+0]<<" "<<(int)row[3*x+1]<<endl;
//f1<<(int)row[3*x+0]<<" "<<(int)row[3*x+1]<<" "<<(int)row[3*x+2]<<endl;

}

}
cvSaveImage("F:\001.jpg",src);//保存修改过的图片
cvReleaseImage(&src);//释放图像
cvDestroyWindow("win");//释放窗口
return 0;
}

1个回答

wangyaninglm
wangyaninglm   Ds   Rxr 2014.05.12 08:57

这个看起来没啥问题啊,你把图片贴上来看看

asongsongsong
asongsongsong bmp是纯位图,没有压缩,而jpg是压缩的,可能在每次压缩的时候变得吧,我也不怎么懂
接近 4 年之前 回复
wangyaninglm
wangyaninglm 为啥换一种图片格式就好了呢???
接近 4 年之前 回复
asongsongsong
asongsongsong 大神,解决了,是jpg的原因,换成bmp就可以了 。谢谢
接近 4 年之前 回复
asongsongsong
asongsongsong 我不会上传图片啊,...您随便找个图片 ,帮我试试,谢谢大神了
接近 4 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!