當前位置:首頁 » 操作系統 » 圖片處理源碼

圖片處理源碼

發布時間: 2023-04-24 23:18:34

1. 如何把matlab圖像處理源代碼導入GUI中去

可以寫一個高唯斗函數: i = imread('圖像位置'); i1 = double(i); a = 圖像處理程序(i1); matrix = size(a,b)(圖像的個數,及排列方式); matrix(1,1)= a; 這樣基本就戚磨可以了山檔

2. php 圖片處理

圖片路徑一定要基於當前php運行所在的路徑去寫,./圖片 是當前目錄,../圖片 是上級目錄,注意規范

3. vc圖像處理Robert運算元源代碼有點看不懂,請教高手幫我解答一下

/*
FILE: edgeSob.c - WORKS!!
AUTH: Bill Green
DESC: 2 3x3 Sobel masks for edge detection
DATE: 07/23/02
REFS: edgeLap.c
*/

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <alloc.h>

/*-------STRUCTURES---------*/
typedef struct sImage;

/*-------PROTOTYPES---------*/
long getImageInfo(FILE*, long, int);
void ImageInfo(FILE* inputFile, FILE* outputFile);
void ColorTable(FILE* inputFile, FILE* outputFile, int nColors);

int main(int argc, char* argv[])
{
FILE *bmpInput, *bmpOutput;
sImage originalImage;
sImage edgeImage;
unsigned int X, Y;
int I, J;
long sumX, sumY;
int nColors, SUM;
unsigned long vectorSize;
unsigned long fileSize;
int GX[3][3];
int GY[3][3];
unsigned char *pChar, someChar;
unsigned int row, col;

someChar = '0'; pChar = &someChar;

/* 3x3 GX Sobel mask. Ref: */
GX[0][0] = -1; GX[0][1] = 0; GX[0][2] = 1;
GX[1][0] = -2; GX[1][1] = 0; GX[1][2] = 2;
GX[2][0] = -1; GX[2][1] = 0; GX[2][2] = 1;

/* 3x3 GY Sobel mask. Ref: */
GY[0][0] = 1; GY[0][1] = 2; GY[0][2] = 1;
GY[1][0] = 0; GY[1][1] = 0; GY[1][2] = 0;
GY[2][0] = -1; GY[2][1] = -2; GY[2][2] = -1;

if(argc < 2) {
printf("Usage: %s bmpInput.bmp\n", argv[0]);
exit(0);
};
printf("含羨Reading filename %s\n", argv[1]);

/*-------DECLARE INPUT & OUTPUT FILES-------*/余老薯
bmpInput = fopen(argv[1], "rb");
bmpOutput = fopen("豎者edgeSob.bmp", "wb");

/*---SET POINTER TO BEGINNING OF FILE----*/
fseek(bmpInput, 0L, SEEK_END);

/*-------GET INPUT BMP DATA--------*/
fileSize = getImageInfo(bmpInput, 2, 4);
originalImage.cols = (int)getImageInfo(bmpInput, 18, 4);
originalImage.rows = (int)getImageInfo(bmpInput, 22, 4);
edgeImage.rows = originalImage.rows;
edgeImage.cols = originalImage.cols;

/*--------PRINT DATA TO SCREEN----------*/
printf("Width: %d\n", originalImage.cols);
printf("Height: %d\n", originalImage.rows);
printf("File size: %lu\n", fileSize);

nColors = (int)getImageInfo(bmpInput, 46, 4);
printf("nColors: %d\n", nColors);

/*------ALLOCATE MEMORY FOR FILES--------*/
vectorSize = fileSize - (14+40+4*nColors);
printf("vectorSize: %lu\n", vectorSize);
edgeImage.data = farmalloc(vectorSize*sizeof(unsigned char));
if(edgeImage.data == NULL) {
printf("Failed to malloc edgeImage.data\n");
exit(0);
}
printf("%lu bytes malloc'ed for edgeImage.data\n", vectorSize);

originalImage.data = farmalloc(vectorSize*sizeof(unsigned char));
if(originalImage.data == NULL) {
printf("Failed to malloc originalImage.data\n");
exit(0);
}
printf("%lu bytes malloc'ed for originalImage.datt\n", vectorSize);

/*------COPY HEADER AND COLOR TABLE---------*/
ImageInfo(bmpInput, bmpOutput);
ColorTable(bmpInput, bmpOutput, nColors);
fseek(bmpInput, (14+40+4*nColors), SEEK_SET);
fseek(bmpOutput, (14+40+4*nColors), SEEK_SET);

/* Read input.bmp and store it's raster data into originalImage.data */
for(row=0; row<=originalImage.rows-1; row++) {
for(col=0; col<=originalImage.cols-1; col++) {
fread(pChar, sizeof(char), 1, bmpInput);
*(originalImage.data + row*originalImage.cols + col) = *pChar;
}
}

/*---------------------------------------------------
SOBEL ALGORITHM STARTS HERE
---------------------------------------------------*/
for(Y=0; Y<=(originalImage.rows-1); Y++) {
for(X=0; X<=(originalImage.cols-1); X++) {
sumX = 0;
sumY = 0;

/* image boundaries */
if(Y==0 || Y==originalImage.rows-1)
SUM = 0;
else if(X==0 || X==originalImage.cols-1)
SUM = 0;

/* Convolution starts here */
else {

/*-------X GRADIENT APPROXIMATION------*/
for(I=-1; I<=1; I++) {
for(J=-1; J<=1; J++) {
sumX = sumX + (int)( (*(originalImage.data + X + I + (Y + J)*originalImage.cols)) * GX[I+1][J+1]);
}
}
if(sumX>255) sumX=255;
if(sumX<0) sumX=0;

/*-------Y GRADIENT APPROXIMATION-------*/
for(I=-1; I<=1; I++) {
for(J=-1; J<=1; J++) {
sumY = sumY + (int)( (*(originalImage.data + X + I + (Y + J)*originalImage.cols)) * GY[I+1][J+1]);
}
}
if(sumY>255) sumY=255;
if(sumY<0) sumY=0;

SUM = abs(sumX) + abs(sumY); /*---GRADIENT MAGNITUDE APPROXIMATION (Myler p.218)----*/
}

*(edgeImage.data + X + Y*originalImage.cols) = 255 - (unsigned char)(SUM); /* make edges black and background white */
fwrite( (edgeImage.data + X + Y*originalImage.cols), sizeof(char), 1, bmpOutput);
}
}

printf("See edgeSob.bmp for results\n");
fclose(bmpInput);
fclose(bmpOutput);
farfree(edgeImage.data); /* Finished with edgeImage.data */
farfree(originalImage.data); /* Finished with originalImage.data */
return 0;
}

/*----------GET IMAGE INFO SUBPROGRAM--------------*/
long getImageInfo(FILE* inputFile, long offset, int numberOfChars)
{
unsigned char *ptrC;
long value = 0L;
unsigned char mmy;
int i;

mmy = '0';
ptrC = &mmy;

fseek(inputFile, offset, SEEK_SET);

for(i=1; i<=numberOfChars; i++)
{
fread(ptrC, sizeof(char), 1, inputFile);
/* calculate value based on adding bytes */
value = (long)(value + (*ptrC)*(pow(256, (i-1))));
}
return(value);

} /* end of getImageInfo */

/*-------------COPIES HEADER AND INFO HEADER----------------*/
void ImageInfo(FILE* inputFile, FILE* outputFile)
{
unsigned char *ptrC;
unsigned char mmy;
int i;

mmy = '0';
ptrC = &mmy;

fseek(inputFile, 0L, SEEK_SET);
fseek(outputFile, 0L, SEEK_SET);

for(i=0; i<=50; i++)
{
fread(ptrC, sizeof(char), 1, inputFile);
fwrite(ptrC, sizeof(char), 1, outputFile);
}

}

/*----------------COPIES COLOR TABLE-----------------------------*/
void ColorTable(FILE* inputFile, FILE* outputFile, int nColors)
{
unsigned char *ptrC;
unsigned char mmy;
int i;

mmy = '0';
ptrC = &mmy;

fseek(inputFile, 54L, SEEK_SET);
fseek(outputFile, 54L, SEEK_SET);

for(i=0; i<=(4*nColors); i++) /* there are (4*nColors) bytesin color table */
{
fread(ptrC, sizeof(char), 1, inputFile);
fwrite(ptrC, sizeof(char), 1, outputFile);
}

}

4. 純C語言實現圖像處理

這個不難吧?雖然我不用c,可是說下怎麼做,首先打開一個BMP文件,然後按照bmp格式解析到一個數組中,接著進行二值化(這個有很多方法),最後將數組中的數據寫入一個新的BMP文件就可以了。

5. 對圖像進行二值化的處理方法,求源代碼,最好是C++/C或者OPENCV

//聲明IplImage指針
IplImage* pFrame = NULL;
IplImage* pFrImg = NULL;
IplImage* pBkImg = NULL;

CvMat* pFrameMat = NULL;
CvMat* pFrMat = NULL;
CvMat* pBkMat = NULL;

pBkImg = cvCreateImage(cvSize(pFrame->width, pFrame->height), IPL_DEPTH_8U,1);
pFrImg = cvCreateImage(cvSize(pFrame->width, pFrame->height), IPL_DEPTH_8U,1);

pBkMat = cvCreateMat(pFrame->height, pFrame->width, CV_32FC1);
pFrMat = cvCreateMat(pFrame->height, pFrame->width, CV_32FC1);
pFrameMat = cvCreateMat(pFrame->height, pFrame->width, CV_32FC1);

//轉化成單通道圖像再處理
cvCvtColor(pFrame, pBkImg, CV_BGR2GRAY);
cvCvtColor(pFrame, pFrImg, CV_BGR2GRAY);

cvConvert(pFrImg, pFrameMat);
cvConvert(pFrImg, pFrMat);
cvConvert(pFrImg, pBkMat);

//二值化前景圖
cvThreshold(pFrMat, pFrImg, 60, 255.0, CV_THRESH_BINARY);

不知道你說的什麼意思,要對一個圖像進行二值化處理用OpenCV的話就是
void cvThreshold( const CvArr* src, CvArr* dst, double threshold,
double max_value, int threshold_type );

這個函數是定閾值二值化處理,比較粗略吧。另外可以用自適應閾值二值化,那樣的話就會比這個更精細。

6. 求MATLAB GUI 環境下 圖像處理圖像的平移,任意角度的旋轉,縮放和翻轉,仿射變換等的源代碼

該gui函數基本上包括圖像處理裡面的最基本處理,相當於一個小型photoshop。

比如讀取文件,

幾何變換中的垂直鏡像,平移,旋轉,縮放;

正交變換的DFT,FFT,DCT,DST,DHT,DWashT;

灰度處理中的反色,直方圖均衡,全局線性變換,分段線性變換,指數非線性變換,對數非線性變換;

圖像增強裡面的加雜訊,平滑,銳化,偽彩色增強;

圖像分割裡面的灰度閾值法,Robert,Laplace,sobel,prewitt,canny運算元邊緣檢測法;

圖像恢復裡面的直接逆濾波,維納濾波;圖像編碼裡面的霍夫曼編碼,行程編碼-

7. GPUImage源碼解析 -- GLProgram

GPUImage的核心是圖片的處理和渲染,而這個過程主要是由OpenGL ES實現的。但是OpenGL ES是一個C API的集合,用起來非常不方便。GLProgram就提供了一個建立OpenGL ES program的面向對象封裝。

一個OpenGL ES Program的創建過程主要分為以下步驟

在OpenGL中,對於同一個Program的渲染必須發生在同一個EGLContext上。所以在整個OpenGL渲染過程中,我們需要先創建一個EGLContext並設置為currentContext。

在iOS中,創建EGLContext相對比較容易,因為謹毀已經有一個系統自帶的EAGLContext類將EGL都封裝好了,只需要調用其initializer並且將這個Context設置成 currentContext 即可:

而在安卓中,則創建Context要麻煩許多。因為安卓要求所有的渲染必須發生在同一個Context以及同一個線程中。如果不使用默認的GLSurfaceView進備晌瞎行渲染的話,則需要更復雜的創建Context的過程:

創建 GLProgram 包括了上述的步驟2-步驟5。 GLProgram 的initializer有多個:

其實他們最終都是傳入了兩個參數,即Vertex Shader以及Fragment Shader。有了這兩個Shader之後,我們就可以開始創建OpenGL ES的Program了。

創建並且compile shader的過程包括幾步:

在GPUImage中,實際上attribute的index並不是真正從program中獲取到的,而是直接通過默認的順序進行排序的。因為我們可以真正通過使用 glBindAttribLocation 和 glEnableVertexAttribArray 來控制每個Attribute的位置。

因此,如果需要寫一個Filter的子類,需要仿空先調用父類中的addAttributes方法,才能夠保證正確的Attribute index。

在GPUImageFilter中,有兩個attributes的位置是固定的:

在OpenGL ES中,uniform的位置並不是固定的,必須在Program link完成之後才能夠獲得,因此,獲取uniform的位置必須通過以下命令:

由於在渲染過程中,很可能添加了多個Program,因此,很可能出現的情況就是需要在不同的Program之間進行切換。切換的命令很簡單:

一旦調用了這個方法,就會將當前的program設置為正在使用中的,然後進行渲染。

由於GPUImage默認是進行圖片處理,其實它的VertexShader就相對簡單很多,因此,GPUImage提供了一個默認的VertexShader:

同時,也提供了一個不進行任何像素操作的PassThrough FragmentShader:

GLProgram主要是提供了對OpenGL ES program創建以及使用的面向對象化封裝。真正進行渲染的Shader都是由不同的Filter自己提供的。在了解了GLProgram之後,我們就可以開始正式進入主題GPUImageFilter了。

8. 求JS在線處理圖片程序源代碼

http://bbs.soucode.com/dv_rss.asp?s=xhtml&boardid=3&id=2129&page=51
這個就是你滑磨想要的東舉讓滲正脊西

9. 基於matlab運動模糊圖像處理的源代碼

等一會的,我來幫你

華東師范大學仔陪???

tuxianghuanyuan('3.jpg', 80, 8, 0.02);


function tuxianghuanyuan(im, a, b, NSPR)

i = imread(im);

f = im2double(i);

PSF = fspecial('motion', a, b);

frest1 = deconvwnr(f, PSF, NSPR);

subplot(221),imshow(f); title('原圖像');

subplot(222),imshow(frest1); title('維納濾波處理叢改後圖像');滲戚判

end

10. 怎麼用PS修改圖片上的文字,PSD源碼怎麼用,求詳細的

1,psd源文件(不是源碼!源碼你根本就看不懂的)就是保留了圖片處理過程的photoshop文件
2,用它不能裝扮空間,只有保存為圖片後才能裝扮空間
3,如果是PSD文件的話一般是可以直接改的,用PS里的文字工具就可以直接改變圖片中的文字。
4,可以
5,書你可以去書店看看(別人推薦的不一定是好的,找一本合適的書不是只看封面就行的),教程你可以在網上搜,多了去了,有時間的話可以泡論壇,那是高手雲集的地方。
6,我不是高手,其它高手的QQ我也不知道。

熱點內容
g92編程 發布:2025-05-17 21:00:31 瀏覽:170
匯編語言第三版腳本之家 發布:2025-05-17 20:54:26 瀏覽:399
資源配置最佳狀態叫什麼 發布:2025-05-17 20:48:58 瀏覽:84
定義dns伺服器的ip 發布:2025-05-17 20:32:37 瀏覽:954
android判斷圖片 發布:2025-05-17 20:32:33 瀏覽:833
安卓12什麼時候適配小米 發布:2025-05-17 20:31:47 瀏覽:71
c語言字元串初始化 發布:2025-05-17 20:18:43 瀏覽:37
安卓融e聯推送需要什麼許可權 發布:2025-05-17 20:18:39 瀏覽:269
我的世界無限武魂伺服器 發布:2025-05-17 20:17:09 瀏覽:372
安卓手游腳本語言 發布:2025-05-17 19:53:07 瀏覽:22