opencv Mat 多通道c++ 操作方法(适用于Windows/Linux)

最近在做opencv 多通道操作时发现网上例子很少,为了方便记忆就自己写了个demo。

例子在vs2010 + opencv 2.4.9 编译通过,只要配置好opencv 的lib路径就可以运行了。

该方法适用于Windows/Linux下的c++ 操作,Windows 和Ubuntu 都试过没问题。

#include <opencv2/opencv.hpp>
#include <iostream>

#pragma comment ( lib, "opencv_core249d.lib")	

using namespace std;
using namespace cv;

void testChannels()
{
	FileStorage fs;
	string file = "channel_methods.xml";
	fs.open(file, FileStorage::WRITE);
	if(!fs.isOpened()){
		cerr << "Error: Could not open  '" << file << endl;
	}

	// Vec2f需要对应矩阵定义的通道数和数据类型CV_32FC2,如果是4通道float型就应定义为Vec4f
	// 第一种用法
	Mat code(1, 10, CV_32FC2, Scalar::all(0));
	Mat_<Vec2f> _code = code;
	for(int k = 0; k < 10; k++){
		_code(0, k)[0]++;
		_code(0, k)[1]=1;
	}
	code = _code;
	fs << "method_1st" << code;

	// 第二种用法
	Mat code_2(1, 10, CV_32FC2, Scalar::all(0));
	for(int k = 0; k < 10; k++){
		code_2.at<Vec2f>(0, k)[0]++;
		code_2.at<Vec2f>(0, k)[1]=2;
	}
	fs << "method_2nd" << code_2;

	// 第三种用法
	vector<Mat> split_code;
	split(code, split_code);
	for(int k = 0; k < 10; k++){
		split_code[0].at<float>(0, k)++;
		split_code[1].at<float>(0, k)=3;
	}
	Mat merge_code(1, 10, CV_32FC2, Scalar::all(0));
	merge(split_code, merge_code);
	fs << "method_3rd" << merge_code;

	// 释放资源,如code.release();等
}

int main(int argc, char** argv)
{
	testChannels();
}
时间: 2024-10-13 20:06:57

opencv Mat 多通道c++ 操作方法(适用于Windows/Linux)的相关文章

适用于kali linux的远程桌面开启方法(从windows xp 远程登录到kali linux )

为了解决Windows远程桌面访问Ubuntu 12.04 之一 中提到的VNC远程桌面的缺点(见http://www.linuxidc.com/Linux/2012-07/64801.htm),我们采用第二种方法XRDP,该方法支持多用户登录并远程桌面. 1.首先参考Windows远程桌面访问Ubuntu 12.04 之安装VNC中提到的安装GNOME桌面方法(点击这里): 2.进入GNOME界面,在左上角进入系统->首选项->桌面共享进行如下设置. 我们共享所使用的协议是rdp,所以我们要

Windows+Linux安装Python工具setuptools

Windows+Linux安装Python工具setuptools setuptools是 Python Enterprise Application Kit(PEAK)的一个副项目,它 是一组Python的 distutilsde工具的增强工具(适用于 Python 2.3.5 以上的版本,64 位平台则适用于 Python 2.4 以上的版本),可以让程序员更方便的创建和发布 Python 包,特别是那些对其它包具有依赖性的状况. 经常接触Python可能会注意到,当需要安装第三方pytho

Linux (Windows Linux子系统)

Linux (Windows Linux子系统) 如果想体验Linux环境下开发和运行.NET Core应用,我们有多种选择.一种就是在一台物理机上安装原生的Linux,我们可以根据自身的喜好选择某种Linux Distribution,目前来说像RHEL.Ubuntu.Debian.Fedora.CentOS和SUSE这些主流的Distribution都是支持的.如果读者朋友们觉得这种方式比较麻烦,我们也可以采用虚拟机的形式安装相应的Linux Distribution,比如我经常使用的都是安

以安装PyTorch为例说明Anaconda在Windows/Linux上的使用

在Windows10上配置完MXNet 1.3.0后,再配置PyTorch 1.0时,发现两者需要依赖的NumPy版本不一致,之前是通过pip安装NumPy,根据pip的版本不同,会安装不同版本的NumPy,使用起来很不方便,而且MXNet和PyTorch依赖的Python版本也可能不同,这里使用Anaconda来轻松解决以上问题. 简单来说,Anaconda是包管理器和环境管理器,它可以便捷获取包且对包能够进行管理,同时对环境可以统一管理的发行版本,其包含了conda, numpy, scip

COMSOL Multiphysics 4.4 Update 1 Multilanguage Windows.&.Linux.&.MacOSX 1CD

GH BLAEDE 风力机性能和载荷计算的集成化软件包 用户界面直观 提供综合模型 空气动力模型 控制系统应用 动力响应等 多种用途 ProgeCAD.2013.Professional.v13.0.16.21 1CD PROKON.v2.6.14 1CD  IBM.SPSS.Amos.v22 1CD IBM.SPSS.Data.Collection.v7.Win32 1CD IBM.SPSS.Data.Collection.v7.Win64 1CD IBM.SPSS.Statistics.v2

Telnet部署与启动 windows&&linux

Telnet部署与启动 windows&&linux 一.win7下默认是禁用telnet服务的(按顺序执行即可) 重新启动Telnet方法如下: 1.如果你直接到控制面板的管理工具里的服务项里去找telnet的话,那是徒劳无功 的,因为默认根本就没有这一服务.当然,你可以通过如下方式搞定."控制面 板" 一〉"程序" 一〉"打开或关闭windows功能",在里面你可以看到许多服务项,选 择"telnet服务器"

Windows Linux HackMacintosh

我想把Windows Linux HackMacintosh三类系统融入到一台笔记本上的神经病应该不多. 我的电脑就一个SATA硬盘,BIOS还不是EFI的.一共同时安装了Windows 8.1.OpenSUSE 13.1.Kail 1.0.4(不常用).东皇黑苹果(因为当时从最新的10.9.3版本一直试下去都支持不了AMD,我的Acer是AMD核&AMD5640显卡,在交流群里都说不要折腾.而且电脑显卡被强制关机坏了两次,耗费400大洋). 我想以后就只装两个系统,Kail 和 Windows

stream opencv mat (webcam)frame throught tcp by boost asio

客户端: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84

Windows + linux 双系统修改启动顺序

使用Windows + linux 双系统的用户可以使用如下方法修改启动顺序 我用的是Fedora 一.简单命令操作 1. 首先找到Windows的菜单menuentry. # cat /boot/grub2/grub.cfg | grep Windows 输出: menuentry 'Windows 7 (loader) (on /dev/sda1)' --class windows --class os $menuentry_id_option 'osprober-chain-58D8931