1. 程式人生 > >有關opencv的學習(7)—圖片的特效顯示

有關opencv的學習(7)—圖片的特效顯示

之前瞭解了影象的HSV色彩空間,使用HSV的值可以生成一些非常有趣的效果。有些用照片編輯軟體所生成的色彩特效,就是用HSV色彩空間實現的。

如下,可以修改一個影象,將其所有畫素設定為一個固定飽和度,不改變其色調和亮度,程式碼如下:

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

using namespace cv;
using namespace std;

int main( )
{
    Mat image=imread("/Users/zhangxiaoyu/Desktop/1.png");
    if(image.empty())
  {
     cout<<"Error!cannot be read...../n";
     return -1;
    }
    
    //轉換為HSV色彩空間
    Mat hsv;
    cvtColor(image, hsv, CV_BGR2HSV);//把三個通道分割進三個影象中
    vector<Mat>channels;
    split(hsv, channels);
    //channels[0]是色調
    //channels[1]是飽和度
    //channels[2]是亮度
    
    channels[1]=255;//將所有畫素的顏色飽和度通道變成255
   // channels[2]=200;//將所有畫素的亮度通道變成255
    
    merge(channels, hsv);//重新合併通道
    
    Mat newimage;
    cvtColor(hsv, newimage, CV_HSV2BGR);//轉換回BGR
    
    namedWindow("newimage");
    imshow("newimage", newimage);

    waitKey(0);
    
}
結果如下所示:

得到的效果像一幅油畫。

原始圖片如下所示:



相關推薦

有關opencv學習7圖片特效顯示

之前瞭解了影象的HSV色彩空間,使用HSV的值可以生成一些非常有趣的效果。有些用照片編輯軟體所生成的色彩特效,就是用HSV色彩空間實現的。 如下,可以修改一個影象,將其所有畫素設定為一個固定飽和度,不改變其色調和亮度,程式碼如下: #include <iostream

opencv學習圖片切割、合併、填充

一、圖片切割與合併   原理通過操作影象矩陣來獲取或合併指定位置的影象 ​ # -*- coding=GBK -*- import cv2 as cv import numpy as np #擷取圖片中的指定區域或在指定區域新增某一圖片 def jie_image(src1

opencv學習:粗略的調整圖片對比度和亮度

基本原理:兩張圖片合成。     先按照原來的圖片的格式新建一個色素全為零的圖片,然後按照兩張圖的比例不同合成一張新圖片。主要用到函式:addWeighted函式 # -*- coding=GBK -*- import cv2 as cv import numpy as

python學習7:python爬蟲之爬取動態載入的圖片,以百度圖片為例

前言: 前面我們爬取圖片的網站都是靜態的,在頁面中右鍵檢視原始碼就能看到網頁中圖片的位置。這樣我們用requests庫得到頁面原始碼後,再用bs4庫解析標籤即可儲存圖片到本地。 當我們在看百度圖片時,右鍵–檢查–Elements,點選箭頭,再用箭頭點選圖片時

OpenCV 學習之 將圖片插入另一張圖片中的實現ROI

/** * 將一張圖片插入另一種圖片中 */ static void exam2() { Mat image = Imgcodecs.imr

OpenCV計算機視覺學習7——影象金字塔高斯金字塔,拉普拉斯金字塔

如果需要處理的原圖及程式碼,請移步小編的GitHub地址   傳送門:請點選我   如果點選有誤:https://github.com/LeBron-Jian/ComputerVisionPractice   本節學習影象金字塔,影象金字塔包括高斯金字塔和拉普拉斯金字塔。它是影象中多尺度表達的一種,最主要用於

《構建之法》學習7——MSF

發現 解決方案 msf 我們 基本原則 無法 strong 出了 微軟 《構建之法》學習(7)——MSF 1.MSF簡史   微軟解決方案框架,也就是微軟推薦的軟件開發方法 2.MSF基本原則   推動信息共享與溝通   所有信息都保留並公開,討論要包括所有

Java學習7:同步問題之生產者與消費者的問題

con runnable pop pre 標記 this auth style about 生產者生產饅頭,消費者消費饅頭。一個籃子,生產者往籃子中放饅頭,消費者從籃子中取饅頭。 /** * 這是一個籃子類 * * @author xcx * @time 2017

R語言學習7字符串和因子

const sprint 水平 tostring 大小 pow 個數 end paste 字符串和因子 1.字符串   創建字符串 > c("Hello","World")[1] "Hello" "World"   paste( ) 函數連接字符串 >

HTML的學習7

表格裡的一些照片 現在已經知道關於表格的一些東西、但是表格相比格式化文字而言其實有另外的用處。您可以使用一個表格來建立照片格式化的精美網路。 以後會進行css的學習,進行課程和專案的訓練。 練習題: <!DOCTYPE html> <html> <

Python學習7——面向物件高階編輯

1、使用__slots__ (1)可以嘗試給例項繫結一個方法: def set_age(self, age): self.age = age from types import MethodType s.set_age = MethodType(set_age, s) # 給例項

memcached的學習7

2018.6.13 memcached客戶端實現分散式的相關知識 memcached的分散式 正如第1次中介紹的那樣, memcached雖然稱為“分散式”快取伺服器,但伺服器端並沒有“分散式”功能。 伺服器端僅包括 第2次、 第3次 前阪介紹的記憶體儲存功能,其實現非常簡單。

JAVAWEB學習7 - Session

Session 1. 什麼是Session ​ 伺服器端為了儲存使用者狀態而建立的一個特殊的物件 ​ 在WEB開發中,伺服器可以為每個使用者瀏覽器建立一個會話物件(session物件),注意:一個瀏覽器獨佔一個session物件(預設情況下)。因此,在需要儲存使用者資料時,伺服器

Js學習7標準庫-object物件

Js原生提供Object物件,O大寫,所有的其他物件都繼承自Object物件,都是Object的例項 Object物件的原生方法分為兩類: 本身的方法:直接定義在Object物件的方法 例項方法:定義在Object原型物件Object.prototype上的方法,可以被Object例項直接使用 凡是定

opencv學習十三:影象直方圖

一、安裝matplotlib 在cmd環境下,按照自己安裝的python位置進入Scripts目錄下,輸入命令:pip install matplotlib 二、 繪出圖片的直方圖 程式碼如下: #匯入cv模組 import cv2 as cv import nump

opencv學習:高斯模糊理論知識

理論知識: 參考連結: 對Photoshop高斯模糊濾鏡的演算法總結:http://www.cnblogs.com/hoodlum1980/archive/2008/03/03/1088567.html Python計算機視覺3:模糊,平滑,去噪:https://www.cnblogs.

opencv學習:利用卷積對影象模糊處理

在影象上個人覺得卷積就是:對於某一位置的畫素,通過演算法來把它附近的所有畫素點的值聯合起來,重新設定這個畫素的大小。(大概就是這樣) 這個演算法類似有:均值,中值,就是取周圍所有畫素的均值、中值來設定這個畫素的大小。 (關於邊界問題:有幾種填充方法:補零、邊界複製、塊複製、映象複製等方法)&

opencv學習:floodFill填充函式

一、指定顏色填充: (1)程式碼如下: #匯入cv模組 import cv2 as cv import numpy as np #泛洪填充 def fill_color_demo(image): #彩色圖片的填充 copyImg=image.copy() h,w=im

opencv 學習3幾何圖形的簡單識別

找到圖形的’極點‘,然後根據圖形的幾何關係便可以得到結果。程式碼如下。(如有錯誤還請指出) /******************************************************************** ** 文 件 名:幾何圖形的簡

Opencv學習——影象變換

一、邊緣檢測 邊緣檢測的一般步驟: 濾波——消除噪聲 增強——使邊界輪廓更加明顯 檢測——選出邊緣點 1.1、canny運算元 void Canny( inputArray, outputArray, double threshold1, double t