Opencv簡(jiǎn)單圖像操作方法實(shí)戰(zhàn)
更新時(shí)間:2024年02月18日 15:23:04 作者:stoAir
OpenCV是一個(gè)開(kāi)源的計(jì)算機(jī)視覺(jué)庫(kù),它提供了一系列豐富的圖像處理和計(jì)算機(jī)視覺(jué)算法,這篇文章主要給大家介紹了關(guān)于Opencv簡(jiǎn)單圖像操作方法的相關(guān)資料,需要的朋友可以參考下
Opencv
一、讀取圖片
1.imshow
Mat imread(const string& filename, intflags=1 ); flags: enum { /* 8bit, color or not */ CV_LOAD_IMAGE_UNCHANGED =-1, /* 8bit, gray */ CV_LOAD_IMAGE_GRAYSCALE =0, /* ?, color */ CV_LOAD_IMAGE_COLOR =1, /* any depth, ? */ CV_LOAD_IMAGE_ANYDEPTH =2, /* ?, any color */ CV_LOAD_IMAGE_ANYCOLOR =4 }; Mat image0=imread("dota.jpg",CV_LOAD_IMAGE_ANYDEPTH | CV_LOAD_IMAGE_ANYCOLOR);//載入最真實(shí)的圖像 Mat image1=imread("dota.jpg",0);//載入灰度圖 Mat image2=imread("dota.jpg",199);//載入3通道的彩色圖像 Mat logo=imread("dota_logo.jpg");//載入3通道的彩色圖像
- CV_LOAD_IMAGE_UNCHANGED,這個(gè)標(biāo)識(shí)在新版本中被廢置了,忽略。
- CV_LOAD_IMAGE_ANYDEPTH- 如果取這個(gè)標(biāo)識(shí)的話,若載入的圖像的深度為16位或者32位,就返回對(duì)應(yīng)深度的圖像,否則,就轉(zhuǎn)換為8位圖像再返回。
- CV_LOAD_IMAGE_COLOR- 如果取這個(gè)標(biāo)識(shí)的話,總是轉(zhuǎn)換圖像到彩色一體
- CV_LOAD_IMAGE_GRAYSCALE- 如果取這個(gè)標(biāo)識(shí)的話,始終將圖像轉(zhuǎn)換成灰度
- flags >0返回一個(gè)3通道的彩色圖像。
- flags =0返回灰度圖像。
- flags <0返回包含Alpha通道的加載的圖像。
2.namedWindow
void namedWindow(const string& winname,int flags=WINDOW_AUTOSIZE );
- WINDOW_NORMAL設(shè)置了這個(gè)值,用戶便可以改變窗口的大小(沒(méi)有限制)
- WINDOW_AUTOSIZE如果設(shè)置了這個(gè)值,窗口大小會(huì)自動(dòng)調(diào)整以適應(yīng)所顯示的圖像,并且不能手動(dòng)改變窗口大小。
- WINDOW_OPENGL 如果設(shè)置了這個(gè)值的話,窗口創(chuàng)建的時(shí)候便會(huì)支持OpenGL。
3.imshow
void imshow(const string& winname, InputArray mat);
4.效果圖
c++
python
二、圖像操作
python
import cv2 as cv import numpy as np image = cv.imread("/home/stoair/Opencv/Images/1.png", 4) cv.namedWindow("initial",cv.WINDOW_NORMAL) cv.namedWindow("after",cv.WINDOW_NORMAL) height = image.shape[0] width = image.shape[1] cv.imshow("initial",image) for i in range(height): for j in range(width): (b, g, r) = image[i, j] ave = b/3 + g/3 + r/3 image[i, j] = (ave, ave, ave) cv.imshow("after",image) cv.waitKey(0)
c++
#include<opencv2/core/core.hpp> #include<opencv2/highgui/highgui.hpp> #include <opencv2/imgcodecs.hpp> #include <opencv2/opencv.hpp> using namespace cv; int main() { Mat image0 = imread("/home/stoair/Opencv/Images/1.png", 4); namedWindow("initial", WINDOW_NORMAL); namedWindow("change", WINDOW_NORMAL); imshow("initial", image0); int height = image0.rows; int width = image0.cols; for(int i = 0; i < height; i++){ for(int j = 0; j < width; j++){ unsigned char b = image0.at<Vec3b>(i, j)[0]; unsigned char g = image0.at<Vec3b>(i, j)[1]; unsigned char r = image0.at<Vec3b>(i, j)[2]; unsigned char ave = b/3 + g/3 +r/3; image0.at<Vec3b>(i, j)[0] = ave; image0.at<Vec3b>(i, j)[1] = ave; image0.at<Vec3b>(i, j)[2] = ave; } } imshow("change", image0); waitKey(0); return 0; }
總結(jié)
到此這篇關(guān)于Opencv簡(jiǎn)單圖像操作方法的文章就介紹到這了,更多相關(guān)Opencv圖像操作內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章

基于numpy.random.randn()與rand()的區(qū)別詳解
下面小編就為大家分享一篇基于numpy.random.randn()與rand()的區(qū)別詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
2018-04-04 
Python中連通域分割Two-Pass算法的原理與實(shí)現(xiàn)詳解
兩遍掃描法(?Two-Pass?),正如其名,指的就是通過(guò)掃描兩遍圖像,將圖像中存在的所有連通域找出并標(biāo)記,本文將詳細(xì)介紹Two-Pass算法的原理與實(shí)現(xiàn),需要的可以參考下
2023-12-12 
python使用ctypes庫(kù)調(diào)用DLL動(dòng)態(tài)鏈接庫(kù)
這篇文章主要介紹了python如何使用ctypes庫(kù)調(diào)用DLL動(dòng)態(tài)鏈接庫(kù),幫助大家更好的理解和使用python,感興趣的朋友可以了解下
2020-10-10