【第三课:C++和opencv】图像反转

        图像反转就是黑白颠倒,若像素px= 0,则反转后px=255。公式:反转后的像素a= 255- a。

       主要作用:增强图像的暗区中白色或灰色的细节,特别是黑色面积在尺寸上占主导地位时。

        好了不说了,先上代码:

        PS:代码使用直接访问像素的,直接访问图片的像素有很多种。

// 图像的反转.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <iostream>
#include <opencv2/opencv.hpp>

using namespace std;
using namespace cv;

int _tmain(int argc, _TCHAR* argv[])
{
	Mat src;
	int height;
	int width;
	
	int i;
	int j;


	//载入图片
	src= imread("F://Opencv_picture//1212.jpg");
	if(!src.data)
	{
	     cout<<"Could not open or find image."<< endl;
		 return -1;
	}
	//获取图像信息
	height= src.rows;                    
	width= src.cols* src.channels();   // 列项要乘通道数

	//创建窗口
	namedWindow("src", CV_WINDOW_AUTOSIZE);
	namedWindow("dst", CV_WINDOW_AUTOSIZE);

    //显示图片
	imshow("src", src);

	//图像反转
	for(i= 0; i< height; i++)
	{
	    for(j=0; j< width; j++)
		{
			src.at<uchar>(i, j)= 255- src.at<uchar>(i, j);   // 每一个像素反转
		}
	}

	//显示图片
	imshow("dst", src);

	waitKey(0);

	return 0;
}

      结果图:


  分析:反转后凸显出病变了的区(黑色部分)

   

PS:

     一:at<uchar>也是在Mat类中定义了的模板

    二: 在检验是否加载了图片时,有两种方法

   (1)if(!image.data)  {   };

     (2)  if(image.empty()) {  }; // empty()是Mat类中定义的模板

       

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值