【opencv学习记录】以迭代器方式访问图像像素,统计像素信息存入文件

opencv2.4.9,练习使用图像迭代器访问像素值+STL中的vector

#include <opencv2\core\core.hpp>
#include <opencv2\highgui\highgui.hpp>
#include <opencv2\imgproc\imgproc.hpp>
#include <iostream>
#include <fstream>

using namespace std;
using namespace cv;

int ppmain()
{
	fstream fs;

	Mat A = imread("lena.jpg",1);
	cout<<A.channels()<<endl;
	cv::cvtColor(A,A,COLOR_BGR2GRAY);
	cout<<A.channels()<<endl;
	cv::threshold(A,A,50,255,THRESH_BINARY);
	cout<<A.channels()<<endl;
	imshow("Binary",A);

	//resize(A,A,Size(16,32));
	Mat B = A(Rect(50,50,10,10));
	imshow("B",B);
	float BL,counter = 0;
	int Sqaure = B.cols * B.rows;

	Mat_<uchar>::iterator it = B.begin<uchar>();
	Mat_<uchar>::iterator itend = B.end<uchar>();

	vector<float> xs;
	for (; it!=itend; ++it)
	{
		xs.push_back(*it);
		if((*it)>0)
			counter+=1;
	}
	BL = counter/Sqaure;
	cout<<xs.size()<<endl;
	cout<<counter<<endl;
	for(int m = 0 ;m<xs.size();m++)
		cout<<xs[m]<<" ";
	//写入文件

	ofstream out("out.txt",ios::out);
    int len = xs.size();
    for(int i=0;i<len;++i)
    {
        out<<xs[i]<<endl;
    }
    out.close();
	/*for(int i = 0;i<A.rows;i++)
	{

		for(int j= 0;j<A.cols;j++)
		{
			int xiangsu = A.at<uchar>(j,i);
		}
	}*/
	cv::waitKey();
	return 0;
}

时间: 2024-10-24 13:01:18

【opencv学习记录】以迭代器方式访问图像像素,统计像素信息存入文件的相关文章

opencv学习笔记(03)——遍历图像(迭代器法)

1 #include <opencv2\highgui\highgui.hpp> 2 #include <opencv2\imgproc\imgproc.hpp> 3 #include <opencv2\core\core.hpp> 4 5 void colorReduce(cv::Mat& img, int div=64); 6 7 8 int main() 9 { 10 cv::Mat img_orginal = cv::imread("F:\\i

deque双端队列容器(对象创建,数组、迭代器方式访问,元素的赋值、插入、删除等)

deque与vector非常相似,不仅可以在尾部插入和删除元素,还可以在头部插入和删除.不过当考虑到容器元素的内存分配策略和操作性能时,deque相对vector较为有优势. 头文件 #include<deque> 创建deque对象 1)deque();//创建一个没有任何元素的deque对象. deque<int> d 2)deque(size_typen);//创建一个具有n个元素的deque对象,每个元素采用它的类型下的默认值. deque<int> d(10)

opencv学习笔记(02)——遍历图像(指针法)

#include <opencv2\core\core.hpp> #include <opencv2\highgui\highgui.hpp> #include <opencv2\imgproc\imgproc.hpp> #include <iostream> void colorReduce(cv::Mat& image, int div=64) { int nr = image.rows; int nc = image.cols * image.

opencv学习笔记(01)——操作图像的像素

1 #include <opencv2\core\core.hpp> 2 #include <opencv2\highgui\highgui.hpp> 3 #include <opencv2\imgproc\imgproc.hpp> 4 #include <iostream> 5 6 7 void salt(cv::Mat& image, int n) 8 { 9 10 for(int k=0; k<n; k++) 11 { 12 13 int

opencv学习记录之图像运算

图像的运算可以是十进制的值运算也可以是二进制的位逻辑运算 一.图像加法运算 1 import cv2 2 import numpy as np 3 img1 = np.random.randint(0,256, size = [3,3] , dtype = np.uint8) 4 img2 = np.random.randint(0,256, size = [3,3] , dtype = np.uint8) 5 img3 = cv2.add(img1,img2) 6 print("img1 =\

访问图像中的像素[OpenCV 笔记16]

再更一发好久没更过的OpenCV,不过其实写到这个部分对计算机视觉算法有所了解的应该可以做到用什么查什么了,所以后面可能会更的慢一点吧,既然开了新坑,还是机器学习更有研究价值吧... 图像在内存中的存储方式 灰度图像 RGB图像,矩阵的列会包含多个子列 因为内存足够大,可以实现连续存储,因此,图像中的各行就能一行一行地连接起来,形成一个长行.连续存储,有助于提高图像扫面速度,可以使用isContinuous()来判断矩阵是否是连续存储. 颜色空间缩减 对于三通道图像,一个像素对应的颜色有一千六百

OPENCV学习笔记11_编写高效的图像扫描循环

When you write an image-processing function, efficiency is often a concern(涉及). When you design your function, you will frequently need to check the computational efficiency of your code in order to detect(发现) any bottleneck(瓶颈) in your processing th

OpenCV学习2-----使用inpaint函数进行图像修复

安装opencv时,在opencv的安装路径下, sources\samples\cpp\  路径里面提供了好多经典的例子,很值得学习. 这次的例子是利用inpaint函数进行图像修复. CV_EXPORTS_W void inpaint( InputArray src, InputArray inpaintMask, OutputArray dst, double inpaintRadius, int flags ); 其中 InputArray src 表示要修复的图像, InputArra

【opencv学习笔记1】5种图像滤波辨析:方框、均值、高斯、中值、双边

图像滤波 什么是图像滤波 图像滤波,即在尽量保留图像细节特征的条件下对目标图像的噪声进行抑制,是图像预处理中不可缺少的操作,其处理效果的好坏将直接影响到后续图像处理和分析的有效性和可靠性. 图像滤波的目的 a.消除图像中混入的噪声 b.为图像识别抽取出图像特征 图像滤波的要求 a.不能损坏图像轮廓及边缘 b.图像视觉效果应当更好 滤波器的定义 滤波器,顾名思义,是对波进行过滤的器件.(摘自网络) 以上的定义是针对物理器件的,但对于图像滤波而言显然也是适用的. 大家都用过放大镜,这里就以此举一个例