1. 程式人生 > >opencv獲取影象RGB值的兩種方法

opencv獲取影象RGB值的兩種方法

1.使用opencv1中的IplImage

程式碼如下:

int main()
{
IplImage* img = cvLoadImage("lena.jpg");
	CvScalar s;
	for (int y = 0; y <img->height; y++) {
		for (int x = 0; x < img->width; x++) {
			s = cvGet2D(img, y, x);
			int mu = (s.val[0] + s.val[1] + s.val[2]) / 3;//照片每個畫素點RGB三通道的均值
			int piex = sqrt((pow(s.val[0] - mu, 2) + pow(s.val[1] - mu, 2) + pow(s.val[2] - mu, 2))/3);
			s.val[0] = piex;
			s.val[1] = piex;
			s.val[2] = piex;
			 //printf("mu=%d\n", mu);
			//printf("B=%f,G=%f,R=%f\n", s.val[0], s.val[1], s.val[2]);//獲取的分別是BGR的值
			cvSet2D(img, y, x, s);
		}
	}
	cvSaveImage("img.jpg", img);
	waitKey(0);
}
2.使用opencv2的Mat

程式碼如下:

int main()
{      Mat img = imread("lena.jpg");
	for (int i = 0; i<img.rows; i++)
	{
		for (int j = 0; j<img.cols; j++)
		{
			int mu = img.at<Vec3b>(i, j)[0] + img.at<Vec3b>(i, j)[1] + img.at<Vec3b>(i, j)[2];
			mu /= 3;
			int stdev = sqrt(double((img.at<Vec3b>(i, j)[0] - mu)*(img.at<Vec3b>(i, j)[0] - mu) + (img.at<Vec3b>(i, j)[1] - mu)*(img.at<Vec3b>(i, j)[1] - mu) + (img.at<Vec3b>(i, j)[2] - mu)*(img.at<Vec3b>(i, j)[2] - mu)) / 3);
			for (int k = 0; k<3; k++)
				img.at<Vec3b>(i, j)[k] = stdev;
		}
	}
	imshow("lena.jpg", img);
	imwrite("A.jpg", img);
	waitKey(0);
	return 0;
}
效果圖如下:


相關推薦

opencv獲取影象RGB方法

1.使用opencv1中的IplImage 程式碼如下: int main() { IplImage* img = cvLoadImage("lena.jpg"); CvScalar s; for

for 循環遍歷字典中的鍵方法

time bsp 山東 解包 江蘇 方法 獲取 for for 循環 一、先獲取key,然後通過dic[key]獲取value import time dict = {‘山東‘:‘濟南‘,‘河南‘:‘鄭州‘,‘江蘇‘:‘南京‘} for key in dict:  prin

js獲取物件屬性的方法,object.屬性名,[‘屬性名’ ]

1、通過點的方式 2、通過括號的方式 例: <input type="text" value="hello" id="text"/> var oText = document.getElementById("text") (1)通過點的方式   oText.pr

Opencv批量處理圖片的方法

轉自:http://blog.csdn.net/hei_ya/article/details/51387624 在生成訓練集的時通常需要對資料夾中圖片進行批處理,本文簡要介紹影象批量讀取、處理、儲存的方法。 方法一: 1.生成圖片描述檔案     對於有多幅影象的資料

Android 獲取手機的解析度方法

  A,過時的API [2]獲取手機的解析度         WindowManager wm  = (WindowManager) getSystemService(WINDOW_SERVICE

ssm中獲取絕對路徑的方法

專案中經常要上傳檔案然後儲存到專案中,這時就需要獲取專案的絕對路徑。方法一:如果我們是在controller裡面想獲取絕對專案的路徑:這樣就可以獲取到專案的絕對路徑了。方法二:我們可以在web.xml裡

android 獲取前一天時間的方法

要想獲取前一天的時間,我這裡有兩種方法,話不多說,直接上程式碼: package com.test; import java.time.LocalDate; import java.time.Loc

Python獲取當前檔名分方法:__file__、sys.argv[0]

Python獲取當前檔名可以通過__file__或者sys.argv[0],下面以test.py檔案為例. test.py: # -*- coding: utf-8 -*- # test.py import sys import os # 絕對路徑 print(__fi

簡易的js獲取星期幾的方法

第一種:var a = ["日", "一", "二", "三", "四", "五", "六"]; var week = new Date().getDay(); var str = "今天是星期"+ a[week]; alert(str); 第二種:var str

android獲取檔案getMimeType的方法

方法1: import java.util.Locale; private static String getSuffix(File file) { if (file == null || !file.exists() || file.isDire

【Jquery】jQuery獲取URL引數的方法

jQuery獲取URL引數的關鍵是獲取到URL,然後對URL進行過濾處理,取出引數。location.href是取得URL,location.search是取得URL“?”之後的字串,也就是說引數部

【Android開發技巧】Fragment中獲取Context物件的方法

我們在使用Fragment的時候經常需要傳遞Context型別的引數,【Android用的比較多的就是下面幾個導航按鈕,點選切換fragment(之前Android studio2.0以前是可以new fragment(context)時傳遞Context,但後來升級了studio2.1.2之後,new

根據日期獲取星期幾的方法

private String date = "2017-05-21";// SimpleDateFormat simpleDateFormat; simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); b11.se

struts2獲取Servlet API的方法

1.通過ServletActionContext獲取    在Action中呼叫ServletActionContext的靜態方法來獲取:        HttpServletRequest request  = ServletActionContext.getRequest

android獲取圖片尺寸的方法以及bitmap的縮放

//Uri.parse("file://"+result.getImage().getCompressPath())) String path=uri.getPath(); Log.e("圖片路徑",path+""); Spa

微信網頁開發之獲取使用者unionID的方法--基於微信的多點登入使用者識別

假設網站A有以下功能需求:1,pc端微信掃碼登入;2,微信瀏覽器中的靜默登入功能需求,這兩種需求就需要用到使用者的unionID,這樣才能在多個登入點(終端)識別使用者。那麼這兩種需求下使用者的unionID該如何獲取呢? 1,先看pc端的解決方案 以snsapi_logi

js+jquery動態設定/增加/刪除/獲取元素屬性的方法集錦對比(動態onclick屬性設定+動態title設定)

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0//EN" "http://www.w3.org/TR/REC-html140/strict.dtd"> <html> <head>

opencv獲取圖片某點畫素方法

1. 通過指標訪問畫素值 IplImage *Temp=*iterIplOri; uchar *dataaa=(uchar*)Temp->imageData; int step=Temp->widthStep/sizeof(uchar); in

前臺向後臺傳方法 以及 從後臺獲取數據的方法

list 獲取數據 data border asc req rip attr 訂單 1、前臺向後臺傳值方法一: 表單提交的方式: 1 <form action="${path }/manage/logon.do" method="post" id="logonFo

React獲取input的並提交的方法

方法一  利用DOM提供的Event物件的target事件屬性取值並提交 import React from 'react'; class InputDemo extends React.Component{ state = { InputValue : ""