[問題] 基本RGB調色盤顯示(細部問題及程式優化)
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) codeBlocks
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) OpenCV
問題(Question):
大家好:
目前利用opencv來學習影像處理以及辨識,試寫了一個調色盤程式來學習
但其中有兩點問題想要詢問大家,程式碼如下
#include <stdio.h>
#include <stdlib.h>
#include <highgui.h>
#include <cv.h>
char TrackBarNameB[]="B";
char TrackBarNameG[]="G";
char TrackBarNameR[]="R";
void onTrackBarB(int position);
void onTrackBarG(int position);
void onTrackBarR(int position);
IplImage *Image1;
int main()
{
cvNamedWindow("Show Image",0);
CvSize Image1Size=cvSize(640,480);
Image1=cvCreateImage(Image1Size,IPL_DEPTH_8U,3);
// cvResizeWindow("Show Image",1024,768);
cvCreateTrackbar(TrackBarNameB,"Show Image",0,255,onTrackBarB);
cvCreateTrackbar(TrackBarNameG,"Show Image",0,255,onTrackBarG);
cvCreateTrackbar(TrackBarNameR,"Show Image",0,255,onTrackBarR);
cvWaitKey(0);
cvDestroyAllWindows();
cvReleaseImage(&Image1);
}
void onTrackBarB(int position)
{
int i,j;
for(i=0;i<Image1->height;i++)
{
for(j=0;j<Image1->widthStep;j=j+3)
{
Image1->imageData[i*Image1->widthStep+j]=position;
}
}
cvShowImage("Show Image",Image1);
}
void onTrackBarG(int position)
{
int i,j;
for(i=0;i<Image1->height;i++)
{
for(j=0;j<Image1->widthStep;j=j+3)
{
Image1->imageData[i*Image1->widthStep+j+1]=position;
}
}
cvShowImage("Show Image",Image1);
}
void onTrackBarR(int position)
{
int i,j;
for(i=0;i<Image1->height;i++)
{
for(j=0;j<Image1->widthStep;j=j+3)
{
Image1->imageData[i*Image1->widthStep+j+2]=position;
}
}
cvShowImage("Show Image",Image1);
}
第一個問題:void onTrackBarR(int position)、void onTrackBarG(int position)、
void onTrackBarB(int position)
這三個副程式內容物幾乎一樣,有辦法將這三個富城是結合在一起,變成呼叫一個副程式
即可以達到三原色數值擷取及顯示的功能嗎?
若能想詢問如何修改?
第二個問題:這個程式在調整影像尺寸的時候, 我以CvSize
Image1Size=cvSize(640,480); 此函數來定義,但當我直接對此函數進行尺寸修改的時候
,如CvSize Image1Size=cvSize(320,240);時,他仍然顯示640,480的尺寸,反而要透過
cvResizeWindow("Show Image",1024,768);才會進行變更,以確定有重新build,想請問
此點原因?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 190.115.177.249
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1429021866.A.3E6.html
推
04/15 02:29, , 1F
04/15 02:29, 1F
→
04/15 04:19, , 2F
04/15 04:19, 2F
後來遇到一個問題,在主程式內cvCreateTrackbar(..onTrackBarR)參數內
我onTrackBarR並沒有給予參數,因此若多加一個參數進去要進行判斷的話
會導致我也需要給予int position 一個質,但若給予值則就會出現錯誤了
※ 編輯: redonizuka (190.115.177.249), 04/15/2015 04:51:37
推
04/15 09:51, , 3F
04/15 09:51, 3F
→
04/15 09:52, , 4F
04/15 09:52, 4F
→
04/15 09:54, , 5F
04/15 09:54, 5F
→
04/15 09:56, , 6F
04/15 09:56, 6F
→
04/15 09:57, , 7F
04/15 09:57, 7F
→
04/15 09:59, , 8F
04/15 09:59, 8F
→
04/15 10:12, , 9F
04/15 10:12, 9F
→
04/15 10:20, , 10F
04/15 10:20, 10F
感謝各位的幫忙與討論,看來第一個問題有點無解的樣子
※ 編輯: redonizuka (190.115.183.169), 04/16/2015 01:34:48
→
04/16 01:47, , 11F
04/16 01:47, 11F
→
04/16 01:48, , 12F
04/16 01:48, 12F
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章