欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C++?opencv學習之圖像像素的邏輯操作

 更新時間:2022年11月10日 10:23:25   作者:打醬油的;  
圖像的像素操作包括讀寫操作、算數(shù)操作、邏輯運算操作等,下面這篇文章主要給大家介紹了關于C++?opencv學習之圖像像素的邏輯操作的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下

1.API和相關知識

1. rectangele 繪制矩形

共7個參數(shù)
            第1個參數(shù) 輸入
            第2個參數(shù) 矩形左上坐標
            第3個參數(shù) 矩形右下坐標
            第4個參數(shù) 矩形顏色
            第5個參數(shù) 線寬
                            如果參數(shù) >=0,則表示繪制矩形(如為1,表示繪制的矩形邊為1個像素)
                            如果參數(shù) < 0,則表示填充矩形(如-1,表示填充整個矩形)
            第6個參數(shù) lineType
                            關于圖像鋸齒,有幾種方式處理
                                不管不顧,就用LINE_4 或者 LINE_8
                                消除鋸齒,就用LINE_AA (AA就是反鋸齒)
            第7個參數(shù)  縮小圖像,同時縮短矩形左上頂點與(0,0)位置的距離(一般沒用)
                      0表示不變
                      1表示圖像*1/2,同時距離(0,0)的x方向和y方向距離*1/2
                      2表示圖像*(1/2)^2,同時距離(0,0)的x方向和y方向距離*(1/2)^2

第二種

rectangele
    繪制矩形
        共6個參數(shù)
            第1個參數(shù) 輸入
            第2個參數(shù) 矩形的左上點+往對角方向延伸的距離(x1,x2,延伸長度1,延伸長度2)
            第3個參數(shù) 矩形顏色
            第4個參數(shù) 線寬
                            如果參數(shù) >=0,則表示繪制矩形(如為1,表示繪制的矩形邊為1個像素)
                            如果參數(shù) < 0,則表示填充矩形(如-1,表示填充整個矩形)
            第5個參數(shù) lineType
                            關于圖像鋸齒,有幾種方式處理
                                不管不顧,就用LINE_4 或者 LINE_8
                                消除鋸齒,就用LINE_AA (AA就是反鋸齒)
            第6個參數(shù)  縮小圖像,同時縮短矩形左上頂點與(0,0)位置的距離
                      0表示不變
                      1表示圖像*1/2,同時距離(0,0)的x方向和y方向距離*1/2
                      2表示圖像*(1/2)^2,同時距離(0,0)的x方向和y方向距離*(1/2)^2
 

void QuickDemo::bitwise_demo(Mat& image) {
 
	Mat m1 = Mat::zeros(Size(256, 256), CV_8UC3);
	Mat m2 = Mat::zeros(Size(256, 256), CV_8UC3);
	
	//rectangle有兩種傳參方式,這里分別進行了示范
	rectangle(m1, Point(100, 100), Point(180, 180), Scalar(255, 255, 0), -1, LINE_8,0);
 
	rectangle(m2, Rect(150, 150, 80, 80), Scalar(0, 255, 255), -1, LINE_8, 0);
	
	imshow("m1", m1);
	imshow("m2", m2);
}

2.位運算

在opencv中,圖像的為運算有4種

  • 異或

bitwise_and(m1, m2, dst);

//bitwise_or(m1, m2, dst);

//bitwise_not(m1, dst);

//bitwise_xor(m1, m2, dst);略

2.實例代碼

void QuickDemo::bitwise_demo(Mat& image) {
 
    Mat m1 = Mat::zeros(Size(256, 256), CV_8UC3);
    Mat m2 = Mat::zeros(Size(256, 256), CV_8UC3);
    
    rectangle(m1, Point(100, 100), Point(180, 180), Scalar(255, 255, 0), -1, LINE_4,0);
    
    rectangle(m2, Rect(150, 150, 80, 80), Scalar(0, 255, 255), -1, 0);
    
    Mat dst;
    
    bitwise_and(m1, m2, dst);
    //bitwise_or(m1, m2, dst);
    //bitwise_not(m1, dst);
    //bitwise_xor(m1, m2, dst);
 
    imshow("位運算",dst);
}

補充:OpenCV--C++圖像像素處理-二值化

#include<opencv2/opencv.hpp>
#include<iostream>
#include<vector>
using namespace std;
using namespace cv;
 
int main()
{	
	Mat img = imread("colors.jpg");
	if (img.empty()) {
		cout << "圖片讀取失敗" << endl;
	}
 
	Mat gray;
	cvtColor(img, gray, COLOR_BGR2GRAY);  //將RGB圖像img轉(zhuǎn)為灰度圖gray
 
	// 彩圖BINARY二值化
	Mat binary, binary_inv;
	threshold(img, binary, 125, 255, THRESH_BINARY);
	threshold(img, binary_inv, 125, 255, THRESH_BINARY_INV);
	imshow("binary", binary);
	imshow("binary_inv", binary_inv);
 
	//灰度圖BINARY二值化
	Mat binary_gray, binary_gray_inv;
	threshold(gray, binary_gray,  125, 255,THRESH_BINARY);
	threshold(gray,  binary_gray_inv,125, 255, THRESH_BINARY_INV);
	imshow("binary_gray", binary_gray);
	imshow("binary_gray_inv", binary_gray_inv);
 
	//灰度圖TOZERO二值化
	Mat tozero_gray, tozero_gray_inv;
	threshold(gray, tozero_gray, 125, 255, THRESH_TOZERO);
	threshold(gray, tozero_gray_inv, 125, 255, THRESH_TOZERO_INV);
	imshow("tozero_gray", binary_gray);
	imshow("tozero_gray_inv", binary_gray_inv);
 
	//灰度圖TRUNC二值化
	Mat trunc_gray;
	threshold(gray, trunc_gray, 125, 255, THRESH_TRUNC);
	imshow("trunc_gray", trunc_gray);
 
	Mat gray_thr = imread("colors.jpg", IMREAD_GRAYSCALE);
	//灰度圖OSTU二值化
	Mat otsu_gray;
	threshold(gray_thr, otsu_gray, 100, 255,THRESH_BINARY |  THRESH_OTSU);
	imshow("trunc_gray", otsu_gray);
 
	//灰度圖triangle二值化
	Mat triangle_gray;
	threshold(gray_thr, triangle_gray, 100, 255, THRESH_BINARY | THRESH_TRIANGLE);
	imshow("triangle_gray", triangle_gray);
 
	//灰度圖自適應二值化
	Mat adapt_mean_gray;
	adaptiveThreshold(gray_thr, adapt_mean_gray, 255, ADAPTIVE_THRESH_MEAN_C, THRESH_BINARY, 55, 0);
	imshow("adapt_mean_gray", adapt_mean_gray);
 
	Mat adapt_gauss_gray;
	adaptiveThreshold(gray_thr, adapt_gauss_gray, 255, ADAPTIVE_THRESH_GAUSSIAN_C, THRESH_BINARY, 55, 0);
	imshow("adapt_gauss_gray", adapt_gauss_gray);
 
	waitKey(0);
	return 0;
}

總結(jié)

到此這篇關于C++ opencv學習之圖像像素的邏輯操作的文章就介紹到這了,更多相關C++ opencv圖像像素邏輯操作內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 淺談C++內(nèi)存分配及變長數(shù)組的動態(tài)分配

    淺談C++內(nèi)存分配及變長數(shù)組的動態(tài)分配

    下面小編就為大家?guī)硪黄獪\談C++內(nèi)存分配及變長數(shù)組的動態(tài)分配。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-09-09
  • 詳解PID控制器原理

    詳解PID控制器原理

    什么是 PID?它是一種在編程中使用的基本方法,如果正確調(diào)整,可以令人難以置信的有效和準確,PID代表比例積分微分,3個單獨的部分連接在一起,雖然有時你不需要三個都使用。例如,您可以改為有P控制,PI控制或PD控制
    2021-06-06
  • C++實現(xiàn)LeetCode(111.二叉樹的最小深度)

    C++實現(xiàn)LeetCode(111.二叉樹的最小深度)

    這篇文章主要介紹了C++實現(xiàn)LeetCode(111.二叉樹的最小深度),本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • C語言中常量指針與指針常量區(qū)別淺析

    C語言中常量指針與指針常量區(qū)別淺析

    這篇文章主要介紹了C語言中常量指針與指針常量區(qū)別,有需要的朋友可以參考一下
    2013-12-12
  • 淺談C++的幾種從鍵盤輸入方式

    淺談C++的幾種從鍵盤輸入方式

    今天小編就為大家分享一篇淺談C++的幾種從鍵盤輸入方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-07-07
  • C++右值引用與移動構(gòu)造函數(shù)基礎與應用詳解

    C++右值引用與移動構(gòu)造函數(shù)基礎與應用詳解

    左值和右值都是針對表達式,左值是指表達式結(jié)束后依然存在的持久對象,右值是指表達式結(jié)束時就不再存在的臨時對象,下面這篇文章主要給大家介紹了關于C++11右值引用和移動語義的相關資料,需要的朋友可以參考下
    2023-02-02
  • c++ 中__declspec 的用法詳解

    c++ 中__declspec 的用法詳解

    這篇文章主要介紹了c++ 中__declspec 的用法詳解,對初學者有一定的幫助,有需要的可以了解一下。
    2016-11-11
  • 實例分析一個簡單的Win32程序

    實例分析一個簡單的Win32程序

    這篇文章主要介紹了實例分析一個簡單的Win32程序,對于Win32應用程序的原理、執(zhí)行流程、實現(xiàn)方法主要環(huán)節(jié)都做了較為詳細的分析,有助于讀者深入理解Windows應用程序設計,需要的朋友可以參考下
    2014-09-09
  • C語言實現(xiàn)簡單通訊錄管理系統(tǒng)

    C語言實現(xiàn)簡單通訊錄管理系統(tǒng)

    這篇文章主要為大家詳細介紹了C語言實現(xiàn)簡單通訊錄管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-07-07
  • C語言之通訊錄的模擬實現(xiàn)代碼

    C語言之通訊錄的模擬實現(xiàn)代碼

    這篇文章主要介紹了C語言之通訊錄的模擬實現(xiàn)代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-04-04

最新評論