opencv像素取反函数

opencv像素取反函数

#include<iostream>
#include<opencv2/opencv.hpp>
using namespace std;
using namespace cv;
int main()
{
//像素取反的方法有两种,一种是借助bitwise_not()函数,一种是手动取反。不过中心思想是利用255-当前像素值=取反值,即白变成黑
Mat src;
src=imread("图片存储位置");
if(!src.data)
{
printf("comld not the picture");
}
Mat dst;
bitwise_not(src,dst,);//这里的bitwise_not()函数有两个参数,第一个参数是原图片,第二个参数是目标对象
namedWindow ("dst_show",CV_WINDOW_AUTOSIZE );
imshow("dst_show",dst);
//以上是利用函数自动
//下面是利手动取反
Mat dst3;
dst3=Mat (src.size(),src.type());
for(int i=0;i<src.cols;i++)
for(int j;j<rows;j++)
{
if(src.channel()==1)
{
int gray=src.at<uchar>(i,j);
dst3.at<uchar>(i,j)=255-gray;
//at(int x,int y)函数,是获取像素的函数,因为at函数午饭自动识别类型,所以添加<uchar>来帮助识别
}else if(src.channel()==3)
{
int b=src.at<Vec3b>(i,j)[0];
int g=src.at<Vec3b>(i,j)[1];
int r=src.at<Vec3b>(i,j)[2];
//[i]中的数字表示通道,<Vec3b>,Vec是类,OpenCV中的向量模板类,具体有Vec2b,Vec3b,Vec2s,Vec3s等。简单而言就是一个uchar类型的,
//长度为3的vector向量
dst3.at<Vec3b>(i,j)[0]=255-b;
dst3.at<Vec3b>(i,j)[1]=255-g;
dst3.at<Vec3b>(i,j)[2]=255-r;
}
}
namedWindow ("dst3_show",CV_WINDOW_AUTOSIZE );
	imshow("dst3_show",***);
	//问题还有待仔细思考,<Vec3b>的问题
waitKey(0);
return 0;
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
`threshold()` 是 OpenCV 中的一个图像处理函数,用于将输入图像进行二值化处理。它的主要作用是将图像中的像素值转换为 0 或 255,以便于进行后续的图像处理操作。 函数原型为: ```python cv.threshold(src, thresh, maxval, type[, dst]) → retval, dst ``` 其中参数含义如下: - `src`:输入图像,必须为单通道灰度图像。 - `thresh`:阈值,用于将像素值进行二分处理。 - `maxval`:当像素值大于或等于阈值时,将其赋值为 `maxval`。 - `type`:阈值处理类型,可选值有: - `cv.THRESH_BINARY`:二值化阈值处理(大于等于阈值的像素值赋值为 `maxval`,小于阈值的像素值赋值为 0)。 - `cv.THRESH_BINARY_INV`:反二值化阈值处理(大于等于阈值的像素值赋值为 0,小于阈值的像素值赋值为 `maxval`)。 - `cv.THRESH_TRUNC`:截断阈值处理(大于等于阈值的像素值赋值为阈值,小于阈值的像素值保持不变)。 - `cv.THRESH_TOZERO`:阈值化为 0 处理(大于等于阈值的像素值保持不变,小于阈值的像素值赋值为 0)。 - `cv.THRESH_TOZERO_INV`:反阈值化为 0 处理(大于等于阈值的像素值赋值为 0,小于阈值的像素值保持不变)。 - `dst`:输出图像,与输入图像 `src` 的大小和类型一致。 - `retval`:返回阈值。 示例代码: ```python import cv2 as cv # 读取灰度图像 img = cv.imread("test.jpg", 0) # 二值化处理 ret, thresh = cv.threshold(img, 127, 255, cv.THRESH_BINARY) # 显示原图和处理结果 cv.imshow("Original Image", img) cv.imshow("Threshold Image", thresh) cv.waitKey(0) ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值