1. 程式人生 > >最近鄰插值演算法的c++實現(QT框架)

最近鄰插值演算法的c++實現(QT框架)

最近鄰插值演算法是用影象中已知的畫素點填充輸出影象,採用畫素複製和畫素抽樣,使原圖放大或者縮小若干倍。
假設原影象的寬度和高度分別為 和 ,縮放後的影象的寬度為 和 ,那麼寬度和高度的縮放比例分別為:
這裡寫圖片描述
這裡寫圖片描述

圖片放縮的程式碼如下:

/*輸入原圖得到目標影象*/
void ImTransformKNN::conversionWithKNN(QImage *src, QImage *dst)
{
    int srcWidth =src->width() ;//變換前圖片寬度
    int srcHeight = src->height();//變換前圖片高度
    int dstWidth = dst->width();//變換後圖片寬度
int dstHeight = dst->height();//變換後圖片高度 qreal uW = (qreal)srcWidth / dstWidth;//寬度縮放比例 qreal uH = (qreal)srcHeight / dstHeight;//高度縮放比例 int x =0;//儲存橫座標 int y =0;//儲存縱座標 for (int i = 0; i < dstHeight; i++)//遍歷每一行 { y = qRound(i*uH); //對應處理前圖片的行數 if (y == srcHeight) { y = srcHeight-1
; } const uchar *pSrc = (uchar *)src->constScanLine(y);//讀取當前行的畫素點 uchar *pDst = (uchar *)dst->scanLine(i);//讀取處理後圖片的行畫素點 for (int j = 0; j < dstWidth; j++) //對當前行迴圈每一個畫素點 { x = qRound(j*uW);//對應處理前圖片的列數 memcpy(pDst+j*4, pSrc+x * 4, 4);//將處理前圖片的畫素複製到處理後圖片裡
} } }

相關推薦

近鄰演算法c++實現QT框架

最近鄰插值演算法是用影象中已知的畫素點填充輸出影象,採用畫素複製和畫素抽樣,使原圖放大或者縮小若干倍。 假設原影象的寬度和高度分別為 和 ,縮放後的影象的寬度為 和 ,那麼寬度和高度的縮放比例分別為:

影象演算法近鄰,雙線性,三次

最近在複習影象演算法,對於一些簡單的影象演算法進行一個程式碼實現,由於找工作比較忙,具體原理後期補上,先上程式碼。今天先給出最近鄰插值,雙線性插值,三次插值。 1.最近鄰插值 原始圖中影響點數為1 (1)程式碼 # include<iostream>

影象演算法-近鄰 雙線性

影象插值演算法包括向上插值和向下插值,向上插值就是對影象進行放大,向下插值就是對影象進行縮小,插值演算法在影象預處理過程中經常被使用,通過插值演算法,可以將影象尺寸變換為任意尺寸,下面以舉例子的方式來說明兩種常見的插值演算法: 假設影象原始尺寸為wi,hi,縮

OpenCV-近鄰及雙線性實現

最近鄰插值及雙線性插值的基本原理舉個簡單的影象:3X3 的256級灰度圖,也就是高為3個象素,寬也是3個象素的影象,每個象素的取值可以是 0-255,代表該畫素的亮度,255代表最亮,也就是白色,0代表最暗,即黑色。假如影象的象素矩陣如下圖所示(這個原始圖把它叫做源圖,Sou

近鄰和雙線性的基本原理 以及OpenCV中resize函式的用法改變影象的大小

最近鄰插值和雙線性插值的基本原理 影象的縮放很好理解,就是影象的放大和縮小。傳統的繪畫工具中,有一種叫做“放大尺”的繪畫工具,畫家常用它來放大圖畫。當然,在計算機上,我們不再需要用放大尺去放大或縮小影象了,把這個工作交給程式來完成就可以了。下面就來講講計算機怎麼來放大縮小圖象;在本文中,

影象縮放--近鄰

參考https://blog.csdn.net/wmn7q/article/details/52743284 自己一直以為放大影象是會放大畫素點的大小的,然後就去查了一下,發現不是這樣的,而是畫素點數量變了,而多的或者少的就依靠插值來實現 百度問答 這裡的答案我

深度剖析八大經典排序演算法C++實現通俗易懂版

內容會持續更新,有錯誤的地方歡迎指正,謝謝! 引言 需握各種排序和常用的資料結構的核心思想,並知道是以什麼樣的方式解決了什麼樣的問題。 該部落格的示例程式碼均以遞增排序為目的~ 學習建議:切忌看示例程式碼去理解演算法,而是理解演算法原理寫出程式碼,否

影象放縮中近鄰和雙線性的基本原理

影象的縮放很好理解,就是影象的放大和縮小。傳統的繪畫工具中,有一種叫做“放大尺”的繪畫工具,畫家常用它來放大圖畫。當然,在計算機上,我們不再需要用放大尺去放大或縮小影象了,把這個工作交給程式來完成就可以了。下面就來講講計算機怎麼來放大縮小圖象;在本文中,我們所說的影象都是指

反距離加權方法——C#實現

  正當自己無所事事時,朋友給我佈置了一項作業,如下圖:      一乍聽,我還挺害怕的,以為很高深的問題,但因為給出了計算公式,實現起來並不難。將上圖中的公式拆解開來,並加上輸入、輸出功能基本上就算完成了。 輸入   使用者需要輸入離散點個數n和相

常見排序演算法C++實現冒泡,直接插入,希爾,堆,歸併,簡單選擇,快排

常見的排序演算法:氣泡排序、直接插入、希爾排序,堆排序,簡單選擇排序,快速排序。這些最基本的演算法都是應該熟練掌握的,下面是C++實現的程式碼,方便大家學習參考: #include<iostream> using namespace std; void swa

【機器學習演算法-python實現】KNN-k近鄰演算法實現附原始碼

 下載地址 kNN演算法及例項原始碼實現#coding=utf-8 ''' Created on Sep 16, 2010 kNN: k Nearest Neighbors Input: inX: vector to compare to existing dataset (1xN)

小生成樹 kruskal演算法 C++實現

#include <iostream> #include <vector> #include <algorithm> #define Inf 0x7fffffff u

小生成樹 prim演算法 C++實現

#include <iostream> #include <vector> #define Inf 0x7fffffff using namespace std; int mai

7種排序演算法C++實現標頭檔案

終於把這幾種排序演算法寫好啦,哈哈哈,記錄一下標頭檔案。#include<iostream> #include"func.h" using namespace std; class sort { public: void bubblesort(int *a,

關於登網鑑權Milenage演算法C++實現根據3GPP TS 35.206 V6.0.0程式修改

 ////////////////////MilenageAlgo.h//////////////// #ifndef MILENAGE_ALGO_H_INCLUDED #define MILENAGE_ALGO_H_INCLUDED typedef unsigned c

淺談常見的七種加密演算法實現附程式碼

1. 前言 數字簽名、資訊加密 是前後端開發都經常需要使用到的技術,應用場景包括了使用者登入、交易、資訊通訊、oauth 等等,不同的應用場景也會需要使用到不同的簽名加密演算法,或者需要搭配不一樣的 簽名加密演算法來達到業務目標。這裡簡單的給大家介紹幾種常見的簽

Dijkstra演算法 java實現含測試

D演算法的實現(求任意點到其他點的最短距離): package D; import java.util.ArrayList; import java.util.List; /** * @author sean22 * @date 2017/12/13/013.

雙向迴圈連結串列C++實現完整版

#include<iostream> using namespace std; /* *節點類 */ struct DCNode { int data; DCNode * prior; DCNode * next; }; /* *連結串列類 */

TF-IDF演算法-Python實現附原始碼

一、背景         TF-IDF演算法全稱 termfrequency–inverse document frequency,是一種用於資訊檢索與資訊探勘的常用加權技術。它的演算法複雜度並不高,但能很好的滿足搜尋高相關度文件的需求。由於它的高效性,TF-IDF 模型在搜尋引擎等實際應用中被廣泛使用