开发者社区> 问答> 正文

利用opencv改变灰度图像中每个像素值碰到的问题....? 400 报错

利用opencv改变灰度图像中每个像素值碰到的问题....? 400 报错

为什么修改失败..?

//图像像素类型IPL_DEPTH_8U
	IplImage *src = cvLoadImage("haha.jpg",CV_LOAD_IMAGE_GRAYSCALE);;
	
	for (int y = 0; y < src->height; y++)
	{
		uchar *ptr = (uchar *)(src->imageData + y*src->widthStep);
		for (int x = 0; x < src->width; x++)
		{
			
			if (ptr[x] >= 200)
			{
				ptr[x] = 255;
			}
			if (ptr[x] <= 50)
			{
				ptr[x] = 0;
			}
			//此处没有输出,说明值还是被我改了
			if (ptr[x] != 0 && ptr[x] != 255)
				cout << (int)ptr[x] << " ";
		}
	}


	cvSaveImage("456.jpg", src);
	

	IplImage *ddd = cvLoadImage("456.jpg", CV_LOAD_IMAGE_GRAYSCALE);


	for (int y = 0; y < ddd->height; y++)
	{
		uchar *ptr = (uchar *)(ddd->imageData + y*ddd->widthStep);
		for (int x = 0; x < ddd->width; x++)
		{
			//这边有输出,说明值没有被我改掉啊!
			if (ptr[x] != 0 && ptr[x] != 255)
				cout << (int)ptr[x] << " ";
		}
	}



展开
收起
爱吃鱼的程序员 2020-06-01 11:39:13 344 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    我发现ps中也有“类似的问题”。当我在photoshop中新建了一张7*6像素照片的时候,给其中某些像素点设定灰度值,值为0%或100%,保存。然而,当我再次打开的时候,发现有些像素点竟然变成了1%或99%。好奇怪的问题啊..这些点基本是边缘点,即1%和99%相邻的

    2020-06-01 11:39:14
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载