> 데이터 베이스 > MySQL 튜토리얼 > opencv2对读书笔记操作图像1

opencv2对读书笔记操作图像1

WBOY
풀어 주다: 2016-06-07 15:00:51
원래의
1164명이 탐색했습니다.

一些小概念 1.从根本上来说,一张图像是一个由数组成的矩阵。这也是OpenCV2用cv::Mat这个数据结构来表示图像的原因。 2.矩阵的每一个元素代表一个像素。对于灰度图像,像素由8位无符号数来表示,其中0代表黑色,255代表白色。对于彩色图像而言,每个像素需要


一些小概念

1.从根本上来说,一张图像是一个由数值组成的矩阵。这也是OpenCV2用cv::Mat这个数据结构来表示图像的原因。

2.矩阵的每一个元素代表一个像素。对于灰度图像,像素由8位无符号数来表示,其中0代表黑色,255代表白色。对于彩色图像而言,每个像素需要三个这样的8位无符号数来表示三个颜色通道。这种情况下矩阵元素是一个三元数。


(1)关于矩阵元素的存取

 

书中举了一个椒盐噪点的例子


#include <opencv2>
#include <opencv2>

void salt(cv::Mat &image, int n) {

	int i,j;
	for (int k=0; k<n k i="rand()%image.cols;" j="rand()%image.rows;" if image.at>(j,i)= 255; 

		} else if (image.channels() == 3) { //三通道,彩色图

			image.at<:vec3b>(j,i)[0]= 255; 
			image.at<:vec3b>(j,i)[1]= 255; 
			image.at<:vec3b>(j,i)[2]= 255; 
		}
	}
}

int main()
{
	srand(cv::getTickCount()); // 产生随机种子

	cv::Mat image= cv::imread("2.jpg",0);

	salt(image,5000);

	cv::namedWindow("Image");
	cv::imshow("Image",image);

	cv::imwrite("salted.bmp",image);

	cv::waitKey(5000);

	return 0;
}

</:vec3b></:vec3b></:vec3b></n></opencv2></opencv2>
로그인 후 복사


结果图像


opencv2对读书笔记操作图像1


  opencv2里使用at这个函数对矩阵元素经行存取


(2)使用指针变量图像


书中给了一个颜色缩减的例子


#include <iostream>

#include <opencv2>
#include <opencv2>

void colorReduce(cv::Mat &image, int div=64) {

	int nl= image.rows; 
	int nc= image.cols * image.channels(); 

	for (int j=0; j<nl j uchar data="image.ptr<uchar">(j);

		for (int i=0; i<nc i data div int main cv::mat image1 colorreduce cv::namedwindow result cv::imshow cv::waitkey return><br>
结果图像
<p><img  src="pic/20151007/1zrq4it5vpc.png" alt="opencv2对读书笔记操作图像1" ><br>
</p>
<p><br>
</p>
<p><br>
</p>
<p><span><br>
<br>
</span></p>


</nc></nl></opencv2></opencv2></iostream>
로그인 후 복사
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿