OpenCV中Mat类进行负数运算的方法

3 篇文章 0 订阅

Mat的类型有CV_8UC1,CV_8UC3等,还有Mat_<int>,Mat_<double>等,一开始不理解后面的Mat_<type>的用处,只知道是个模板类,今天算PCA的时候发现两个CV_8UC1类型的Mat相减,负数直接被置零了(废话,因为是unsigned)。

然后又创建了一个CV_8SC1的矩阵作为相减的结果,但是还是为0,想了一下,大概是因为signed和unsigned进行运算时会自转换为unsigned,所以还是不行。

然后想到了Mat_类,试了一下,果然可以,想了一下CV_8UC1等是对图像来说的格式,具有图像格式的意义。但是Mat_类只是个单纯的int或double的矩阵,没有特殊意义,以后在做没有图像意义的运算的时候用Mat_类感觉更佳。


以下是把CV_8UC1转成Mat_<int>进行负值运算

#include <opencv2\opencv.hpp>
using namespace cv;
using namespace std;
int main()
{
	Mat src(2,2, CV_8UC1, 11);
	Mat_<int> new1 = src;
	Mat det(2, 2, CV_8UC1, 24);
	Mat_<int> new2 = det;
	Mat_<int> result;
	result = new1 - new2;
	cout << result;
	system("pause");
	return 0;
}

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值