A. vc6.0對圖像的操作的代碼,高分跪求!
這點錢真心不夠勞務費的
B. 如何用c語言編程實現 把圖片轉換成有漫畫效果的
先調用
圖片庫
,
把圖片打開,存入內存里,然後把每個像素點的RGBV值改成想要的效果,
然後再寫入文件。圖片的操作可惜不能貼地址
C. VC如何實現摳圖功能
類似摳圖把,給圖像加上mask,完後把mask保存下來,僅供參考
#include<iostream>//forstandardI/O
#include<string>//forstrings
#include<iomanip>//
#include<sstream>//stringtonumberconversion
#include<opencv2/imgproc/imgproc.hpp>//GaussianBlur
#include<opencv2/core/core.hpp>//BasicOpenCVstructures(cv::Mat,Scalar)
#include<opencv2/highgui/highgui.hpp>//OpenCVwindowI/Ousingnamespacestd;
usingnamespacecv;
//images
MatinputImg,showImg,segMask,segShowImg;
//mask
MatfgScribbleMask,bgScribbleMask;
//userclickedmousebuttonsflags
boolrButtonDown=false;
boollButtonDown=false;
intscribbleRadius=5;
//mouselistener
staticvoidonMouse(intevent,intx,inty,int,void*)
{
//cout<<"OnMouse:("<<x<<","<<y<<")"<<endl;
if(event==CV_EVENT_LBUTTONDOWN)
{
lButtonDown=true;
}
elseif(event==CV_EVENT_RBUTTONDOWN)
{
rButtonDown=true;
}
elseif(event==CV_EVENT_LBUTTONUP)
{
lButtonDown=false;
}
elseif(event==CV_EVENT_RBUTTONUP)
{
rButtonDown=false;
}
elseif(event==CV_EVENT_MOUSEMOVE)
{
if(rButtonDown)
{
//scribblethebackground
circle(bgScribbleMask,Point(x,y),scribbleRadius,0,-1);
circle(showImg,Point(x,y),scribbleRadius,CV_RGB(0,0,255),-1);
}
elseif(lButtonDown)
{
//scribbletheforeground
circle(fgScribbleMask,Point(x,y),scribbleRadius,0,-1);
circle(showImg,Point(x,y),scribbleRadius,CV_RGB(255,0,0),-1);
//fgScribbleMask.at<char>(y,x)=(char)255;
//setvariablesusingmask
//showImg.setTo(redColorElement,fgScribbleMask);
//showImg.at<Vec3b>(y,x)[0]=0;
//showImg.at<Vec3b>(y,x)[1]=0;
//showImg.at<Vec3b>(y,x)[2]=255;
}
}
imshow("ScribbleImage",showImg);
imshow("fgmask",fgScribbleMask);
imshow("bgmask",bgScribbleMask);
}
//cleareverythingbeforeclosing
voiddestroyAll()
{
//destroyallwindows
destroyWindow("InputImage");
destroyWindow("ScribbleImage");
destroyWindow("bgmask");
destroyWindow("fgmask");
destroyWindow("SegmentationMask");
destroyWindow("SegmentationImage");
//clearalldata
fgScribbleMask.release();
bgScribbleMask.release();
inputImg.release();
showImg.release();
segMask.release();
segShowImg.release();}
//initallimages/vars
intinit(char*imgFileName)
{
//Readthefile
inputImg=imread(imgFileName,CV_LOAD_IMAGE_COLOR);
showImg=inputImg.clone();
segShowImg=inputImg.clone();//Checkforinvalidinput
if(!inputImg.data)
{
cout<<"Couldnotopenorfindtheimage:"<<imgFileName<<std::endl;
return-1;
}
//
fgScribbleMask.create(2,inputImg.size,CV_8UC1);
fgScribbleMask=255;
bgScribbleMask.create(2,inputImg.size,CV_8UC1);
bgScribbleMask=255;
segMask.create(2,inputImg.size,CV_8UC1);
segMask=0;
//Createawindowfordisplay.
namedWindow("InputImage",CV_WINDOW_AUTOSIZE);
namedWindow("ScribbleImage",CV_WINDOW_AUTOSIZE);
namedWindow("fgmask",CV_WINDOW_AUTOSIZE);
namedWindow("bgmask",CV_WINDOW_AUTOSIZE);
//Showourimageinsideit.
imshow("InputImage",inputImg);
imshow("ScribbleImage",showImg);
imshow("fgmask",fgScribbleMask);
imshow("bgmask",bgScribbleMask);
moveWindow("ScribbleImage",1,1);
moveWindow("InputImage",inputImg.cols+50,1);
moveWindow("BinPerPixel",2*(inputImg.cols+50),1);
moveWindow("Edges",2*(inputImg.cols+55),1);
//setthecallbackonmouse
setMouseCallback("ScribbleImage",onMouse,0);
return0;
}
intmain(intargc,char*argv[])
{
Stringimage_name,numBinsStr,bhaSlopeStr;
cout<<"inputParameters:"<<endl;
cout<<"imagename:";
cin>>image_name;
//getimgnameparameter
char*imgFileName=(char*)image_name.c_str();
if(init(imgFileName)==-1)
{
cout<<"Couldnotinitialize"<<endl;
return-1;
}//Waitforakeystrokeinthewindow
for(;;)
{
charkey=waitKey(0);
switch(key)
{
case'q':
cout<<"goodbye"<<endl;
destroyAll();
return0;
case'-':
//縮小畫筆直徑
if(scribbleRadius>2)
scribbleRadius--;
cout<<"currentradiusis"<<scribbleRadius<<endl;
break;
case'+':
if(scribbleRadius<100)
scribbleRadius++;
cout<<"currentradiusis"<<scribbleRadius<<endl;
break;
case's':
{
//thisiswherewestoretheresults
segMask=0;
inputImg.To(segShowImg);
//inputImg.To(showImg);
imwrite("bg.bmp",bgScribbleMask);
break;
}
case'r':
{
cout<<"resetting"<<endl;
destroyAll();
if(init(imgFileName)==-1)
{
cout<<"couldnotinitialize"<<std::endl;
return-1;
}
break;
}
}
}
return0;
}
D. 用c語言如何實現圖形操作
graph的相關庫對windows支持不好
我曾經遇到過同樣的問題
1年前左右吧,我在學校用win98,tc2.0環境下編的俄羅斯方塊,發到網上,n多人說不好用,我就不信,結果拿回家是win xp的環境,確實就不好用了
c語言的很多圖形庫(包括內聯下的滑鼠操作 和鍵盤中斷操作) 在win xp下都不好用……
因為好像C語言的編譯是這樣子的:他是發給一個請求,先格外開一個圖形的界面,然後對圖形的操作都是在這個界面上的
我曾經遇到的還有一個問題是printf,在圖形界面下顯示也不好的問題
E. 用C語言如何編寫一個石頭剪子布的程序
#include <stdio.h>
#include <time.h>
#include <stdlib.h>
void main()
{
int com,user;
char c;
srand((unsigned)time(NULL)); //初始化隨機數,如果沒有這條語句,每次運行電腦產生的隨機數序列都是一樣的
printf("進入游戲 ");
do{
printf("請出拳(1.剪刀、2.石頭、3.布):");
scanf("%d",&user);
com=rand()%3+1; //產生1-3范圍內的隨機數
printf("電腦出%s ",com==1?"剪刀":com==2?"石頭":"布");
switch(com-user) //用電腦產生的數和用戶輸入的數的差值來判斷勝負
{
case 0:
printf("平手 ");
break;
case 1:
case -2:
printf("電腦贏了 ");
break;
case -1:
case 2:
printf("你贏了 ");
}
printf("繼續游戲按Y鍵、其它鍵退出");
getchar();
c=getchar();
}while(c=='y' || c=='Y');
printf("已經退出遊戲");
}
(5)用c語言實現摳圖擴展閱讀
C++編程: 石頭剪子布
#include<cstdio>
#include<iostream>
using namespace std;
int main()
{
int n;
char a[10],b[10];
cin>>n;
int c[n+3];
for(int i=1;i<=n;i++)
{
cin>>a>>b;
if(a[0]=='R')
{
if(b[0]=='R')
{
c[i]=0;
}
if(b[0]=='S')
{
c[i]=1;
}
if(b[0]=='P')
{
c[i]=2;
}
}
else if(a[0]=='S')
{
if(b[0]=='R')
{
c[i]=2;
}
if(b[0]=='S')
{
c[i]=0;
}
if(b[0]=='P')
{
c[i]=1;
}
}
else if(a[0]=='P')
{
if(b[0]=='R')
{
c[i]=1;
}
if(b[0]=='S')
{
c[i]=2;
}
if(b[0]=='P')
{
c[i]=0;
}
}
}
for(int i=1;i<=n;i++)
switch(c[i])
{
case 0:
{
printf("Tie ");break;
}
case 1:
{
printf("Player1 ");break;
}
case 2:
{
printf("Player2 ");break;
}
}
return 0;
}
F. PopFore摳圖軟體怎麼用
1.啟動PopFore:PopFore是純綠色軟體,無需安裝即可使用。下載解壓後雙擊Popfore.exe啟動PopFore主程序,您將看到如下圖所示的界面。右下角顯示的是即時幫助提示。
2.打開輸入圖像:打開圖像後您將看到如下圖所示的界面,在這里您需要注意畫刷工具欄和視圖控制按鈕。
畫刷工具欄,在視圖上單擊右鍵可將畫刷工具欄移動到滑鼠所在的位置;
視圖控制按鈕,每個字母對應視圖的一種顯示模式(S=源圖,A=alpha圖,B=背景圖,F=前景圖,C=合成圖);
3.使用alpha畫刷添加種子像素標記,即告訴摳圖演算法哪些區域是前景,哪些區域是背景。如下圖所示,黃色筆刷表示所覆蓋的像素為前景;藍色筆刷表示所覆蓋的像素為背景。
界面的右側顯示了兩個輔視圖,在您添加種子像素標記的同時,即可從這兩個視圖觀察到摳圖結果。
按SHIFT鍵可使alpha畫刷的狀態在前景和背景間切換。
4.切換主視圖的顯示模式到alpha圖,繼續添加標記。在alpha圖上交互的好處是您可以對照著當前結果,將標記添加到包含錯誤最多的區域。這將比在源圖上交互更直觀、更有效率。
5.繼續添加標記,直到得到一張基本正確的alpha圖。按下V鍵可顯示/隱藏筆刷的痕跡;為了更好地觀察摳圖結果,可使用“拾取背景色”工具改變合成圖的背景色。
6.點擊模式切換按鈕進入精修模式,此時保存按鈕將變得可用。對於背景比較簡單的情況,通過智能摳圖演算法得到的結果已經基本正確。如果您對摳圖質量要求不是很高的話,就可以保存摳圖結果了。
7.保存:摳圖結果可被保存成透明的.png圖像,您可以選擇保存前景或只保存alpha圖,展開保存菜單可進行選擇。
.png格式採用的是無損壓縮,因此您不必擔心保存會損失質量;
快速保存,將摳圖結果按默認路徑保存(前景和alpha圖分別保存到與源圖像同目錄下的*_f.png和*_a.png);
合成圖的背景色並不影響保存結果,PopFore暫不提供背景替換的功能;摳圖完成後,您可以將保存的結果導入其它圖像編輯軟體中,與任意新背景合成;
G. VC6.0或VS2010對圖片操作
你終於肯放棄vc6了?其實有gdi+ sdk的話vc6也可以……
既然提到vs2010了,那麼我說一下gdi+的做法。
1、從文件創建一個Image對象(Image::FromFile
2、根據要保存的部分的大小(解析度)創建一個Bitmap對象(直接用它構造函數即可
2、從Bitmap對象創建一個Graphics對象(Graphics::FromImage
3、調用Graphics對象上的DrawImage方法,
g->DrawImage(步驟1的Image對象指針, 0, 0, x, y, w, h, UnitPixel);
其中x、y是要截取的部分的左上角的坐標,w和h是要截取的部分的大小(也就是目標圖像的解析度,步驟2中創建的圖像的解析度
4、調用Graphics對象上的Flush方法確保數據都寫入Bitmap對象了
5、調用步驟2創建的Bitmap對象上的Save方法保存文件,這個具體你可以上網搜,關於那些clsid啥的應該送什麼參數
H. 在電腦上如何扣圖
1、打開電腦上的ps,放入圖片素材後解鎖背景圖層。2、點擊菜單欄中的選擇找到主體並點擊。3、按下鍵盤上的CTRL+SHIFT+I反選區域刪除背景。4、按下鍵盤上的CTRL+D釋放選區即可。5、根據以上步驟即可在ps中把背景去掉。 注意事項:1、首先解鎖背景圖層。2、點擊主體後會有三秒載入時間。
ps摳圖方法大全8種方法有哪些?請看下面方法。
方法1:鋼筆工具摳圖
1/8
鋼筆工具適用於外形復雜,不連續、色差不大的圖,加工精度高、純手工放大邊界點來摳圖,首先將需要摳圖的素材拖到ps中
WinMAC軟體PS在線激活安裝中文版免費下載廣告
2/8
然後利用快捷鍵「Ctrl+J」復制一層圖層
3/8
然後選擇「鋼筆工具」
WinMAC軟體PS在線激活安裝中文版免費下載廣告
4/8
接著在需要摳圖的地方描點
5/8
將需要摳出來的部分都圈住後點擊滑鼠右鍵,選擇「建立選區」
6/8
然後調整羽化半徑,根據描點距離圖片的距離選擇,勾選「消除鋸齒」後點擊「確定」
7/8
接著就建立好選區,可以利用快捷鍵「Ctrl+C」復制選區的圖層
8/8
然後在一個空白圖層利用快捷鍵「Ctrl+V」粘貼即可完成摳圖
方法2:魔術棒摳圖
1/5
魔術棒摳圖適用於圖像和背景色色差明顯,背景單一,圖像邊界清晰的素材,首先將圖片素材利用ps打開
2/5
接著點擊「魔棒工具」
3/5
然後調整容差值為「32」,勾選「連續」和「消除鋸齒」
4/5
然後利用魔棒工具點擊圖片的背景區,選擇一個區域後點擊鍵盤上的刪除鍵
5/5
把背景全部刪除後即可完成摳圖
方法3:色彩范圍摳圖
1/7
色彩范圍摳圖適用於背意景色單一,圖像分明、背景無色彩的素材。首先利用Ps打開圖片素材
2/7
接著點擊「選擇」選項卡
3/7
然後在彈出的選項中選擇「色彩范圍」
4/7
然後用顏色吸管拾取背景色
5/7
接著勾選「反相」並點擊「確定」
6/7
然後會建立一個選區
7/7
最後利用快捷鍵「Ctrl+J」復制一層圖層即可完成摳圖
方法4:磁性索套工具摳圖
1/5
磁性套索摳圖適用於圖像邊界清晰,磁性索套會自動識別並黏附在圖像邊界上,如果邊界模糊處放大了再放置這樣就更精確,首先利用ps打開圖片素材
2/5
然後選擇「磁性套索工具」
3/5
接著將滑鼠移到圖像邊界處,然後磁性套索工具自動識別並黏附在圖像邊界上
4/5
等磁性套索工具閉合後就將整個圖像都選中了
5/5
然後利用快捷鍵「Ctrl+J」復制一層圖層即可完成摳圖
方法5:羽化法摳圖
1/8
羽化法摳圖適用於邊界清楚的素材,首先利用ps打開圖片素材
2/8
然後選擇「套索工具」
3/8
接著利用套索工具將圖像選中
4/8
然後點擊滑鼠右鍵,選擇「羽化」
5/8
根據套索與圖像的距離調整羽化半徑,距離較近就調小點,如調整羽化半徑為「5」後點擊「確定」
6/8
然後就將圖像摳出來了,但是周圍有不需要的部分,可以利用橡皮擦工具擦去
7/8
點擊選擇「橡皮擦工具」
8/8
將周圍多餘的部分擦去即可完成摳圖
方法6:蒙板摳圖
1/7
蒙板摳圖快速並直觀適用范圍廣,首先利用ps打開圖片素材
2/7
然後利用快捷鍵「Ctrl+J」復制一層圖層
3/7
然後選擇「圖層1」並點擊「添加圖層蒙版」
4/7
接著將前景色調為黑色,背景色調為白色
5/7
調好後選擇「畫筆工具」
6/7
調整畫筆工具的顏色為黑色,並選擇圖層蒙版
7/7
接著利用畫筆工具將背景擦去即可完成摳圖,如果不小心將圖像擦掉了,可以交換前景色和背景色在擦除即可還原
方法7:通道摳圖
1/16
通道摳圖適用於色差不大,外形復雜的圖形,像毛發及樹枝等。首先利用ps打開圖片素材
2/16
然後利用快捷鍵「Ctrl+j」復制一層圖層
3/16
接著點擊「通道」
4/16
選擇並復制一個圖像清楚的通道,如「藍色」
5/16
然後點擊「圖像」選項卡
6/16
選擇「調整」下的「色階」
7/16
然後調整色階以增強圖像對比度,調整好後點擊「確定」
8/16
接著選擇「快速選擇工具」
9/16
將圖像選中,邊界處可以放大在選擇
10/16
選擇好後點擊「編輯」選項卡
11/16
在彈出來的選項中選擇「填充」
12/16
將圖像填充為背景色即為黑色,點擊「確定」
13/16
然後選擇「圖像」選項卡
14/16
選擇調整下的「反相」將背景設置為白色
15/16
接著利用快捷鍵「Ctrl+J」復制一層圖層
16/16
接著將圖層1和背景的「小眼睛」關閉即可查看摳出來的圖像
方法8:反向摳圖
1/7
找到圖片,點擊打開。
2/7
點擊使用魔棒工具。
3/7
點擊外部空白區域。
4/7
點擊右鍵,點擊「選擇反向」。
5/7
再點擊右鍵,選擇通過拷貝(剪切)的圖層。
6/7
刪除背景圖層。
7/7
如圖,摳圖完成。
怎樣在電腦上扣圖截圖有時,在電腦上閱讀新聞或其他資料時,發現有些圖片或資料片段很是精彩,非常值得保存。但是,由於技術原因,自己的想法又無法實現。為此,特求教於高手,很快解決了這一難題。現將其方法介紹於下,和大家共通分享:1、現將要抓扣的圖片資料框定。2、手指點擊鍵盤上的Print Screen鍵(或prtsc sysRq),此鍵有的在鍵盤上面第一行的F12鍵後面。3、點擊電腦左右下角「開始」,==「程序」==「附件」==「畫圖」。4、出現新的「未命名-畫圖」模板,點擊左上角「編輯」==「黏貼」。5、將所黏貼的圖片資料保存到自己最熟悉和容易找到的位置。或直接列印等。6、將所黏貼的圖片有時需轉換成jpg格式,否則無法運用到其他位置。7、至此你的扣圖用圖願望就實現了。2