心得 :
開始感覺到自己查資料的成就感,不過還是有點困難,所以還是互相討論出來的,圖片的變大變小,圖片變灰諧黑白,還有改一改變數會有不同的效果cvCreatImage()才是重點,不管要怎麼做效果,都要釋放空間給圖片或視訊使用。
#include "cv.h"
#include "cxcore.h"
#include "highgui.h"
int main( int argc, char** argv )
{
//聲明 IplImage
IplImage* pImg = NULL;
IplImage* pImg2 = NULL;
IplImage* gray = NULL;
IplImage* bw = NULL;
IplImage* pCannyImg = NULL;
IplImage* pImg3 = NULL;
//載入圖像,強制轉化為Gray
pImg=cvLoadImage("fruits.jpg");
//為圖像申請空間
pImg2 = cvCreateImage(cvSize(pImg->width,pImg->height), IPL_DEPTH_8U, 3);
pImg3 = cvCreateImage(cvSize(pImg->width*3.14,pImg->height*3.14), IPL_DEPTH_8U, 3);
cvResize(pImg, pImg3);
gray = cvCreateImage(cvSize(pImg->width,pImg->height), IPL_DEPTH_8U, 1);
bw = cvCreateImage(cvSize(pImg->width,pImg->height), IPL_DEPTH_8U, 1);
pCannyImg = cvCreateImage(cvGetSize(pImg), IPL_DEPTH_8U, 1);
//cvCvtColor彩色轉灰階
cvCvtColor(pImg, gray, CV_BGR2GRAY);
//cvThreshold灰階轉黑白
cvThreshold( gray, bw, 63, 255, CV_THRESH_BINARY );
cvThreshold( pImg, pImg2, 127, 255, CV_THRESH_BINARY );
//canny邊緣檢測
cvCanny(gray, pCannyImg, 50, 150, 3);
//創建視窗
cvNamedWindow("src", 1);
cvNamedWindow("src2",1);
cvNamedWindow("blackwhite", 1);
cvNamedWindow("gray",1);
cvNamedWindow("canny",1);
cvNamedWindow("pImg31",1);
//顯示圖像
cvShowImage( "src", pImg );
cvShowImage( "src2", pImg2 );
cvShowImage( "gray", gray );
cvShowImage( "blackwhite", bw );
cvShowImage( "canny", pCannyImg );
cvShowImage( "pImg31", pImg3 );
cvWaitKey(0); //等待按鍵
//銷毀視窗
cvDestroyWindow( "src" );
cvDestroyWindow( "src2" );
cvDestroyWindow( "canny" );
cvDestroyWindow( "blackwhite" );
cvDestroyWindow( "gray" );
cvDestroyWindow( "pImg31" );
//釋放圖像
cvReleaseImage( &pImg );
cvReleaseImage( &pImg2 );
cvReleaseImage( &gray);
cvReleaseImage( &bw );
cvReleaseImage( &pCannyImg );
cvReleaseImage( &pImg3 );
}
#include "cv.h"
#include "cxcore.h"
#include "highgui.h"
int main( int argc, char** argv )
{
//聲明 IplImage
IplImage* pImg = NULL;
IplImage* pImg2 = NULL;
IplImage* gray = NULL;
IplImage* bw = NULL;
IplImage* pCannyImg = NULL;
IplImage* pImg3 = NULL;
//載入圖像,強制轉化為Gray
pImg=cvLoadImage("fruits.jpg");
//為圖像申請空間
pImg2 = cvCreateImage(cvSize(pImg->width,pImg->height), IPL_DEPTH_8U, 3);
pImg3 = cvCreateImage(cvSize(pImg->width*3.14,pImg->height*3.14), IPL_DEPTH_8U, 3);
cvResize(pImg, pImg3);
gray = cvCreateImage(cvSize(pImg->width,pImg->height), IPL_DEPTH_8U, 1);
bw = cvCreateImage(cvSize(pImg->width,pImg->height), IPL_DEPTH_8U, 1);
pCannyImg = cvCreateImage(cvGetSize(pImg), IPL_DEPTH_8U, 1);
//cvCvtColor彩色轉灰階
cvCvtColor(pImg, gray, CV_BGR2GRAY);
//cvThreshold灰階轉黑白
cvThreshold( gray, bw, 63, 255, CV_THRESH_BINARY );
cvThreshold( pImg, pImg2, 127, 255, CV_THRESH_BINARY );
//canny邊緣檢測
cvCanny(gray, pCannyImg, 50, 150, 3);
//創建視窗
cvNamedWindow("src", 1);
cvNamedWindow("src2",1);
cvNamedWindow("blackwhite", 1);
cvNamedWindow("gray",1);
cvNamedWindow("canny",1);
cvNamedWindow("pImg31",1);
//顯示圖像
cvShowImage( "src", pImg );
cvShowImage( "src2", pImg2 );
cvShowImage( "gray", gray );
cvShowImage( "blackwhite", bw );
cvShowImage( "canny", pCannyImg );
cvShowImage( "pImg31", pImg3 );
cvWaitKey(0); //等待按鍵
//銷毀視窗
cvDestroyWindow( "src" );
cvDestroyWindow( "src2" );
cvDestroyWindow( "canny" );
cvDestroyWindow( "blackwhite" );
cvDestroyWindow( "gray" );
cvDestroyWindow( "pImg31" );
//釋放圖像
cvReleaseImage( &pImg );
cvReleaseImage( &pImg2 );
cvReleaseImage( &gray);
cvReleaseImage( &bw );
cvReleaseImage( &pCannyImg );
cvReleaseImage( &pImg3 );
}
沒有留言:
張貼留言